comparison libpurple/protocols/msn/notification.c @ 29350:99d1b433dba0

Keep CurrentMedia in a separate object outside of MsnUser that needs to be allocated if a user has media. This makes MsnUser smaller by the size of 3 pointers (apparently) for each buddy in your buddy list. In practice it looks like less than 1% of MSN users have media set, so this should save a little bit of memory.
author Mark Doliner <mark@kingant.net>
date Thu, 04 Feb 2010 00:15:41 +0000
parents 23f6f80f45ed
children 08296b862f98
comparison
equal deleted inserted replaced
29349:3de19f8f5c92 29350:99d1b433dba0
1611 MsnSession *session; 1611 MsnSession *session;
1612 PurpleAccount *account; 1612 PurpleAccount *account;
1613 MsnUser *user; 1613 MsnUser *user;
1614 const char *passport; 1614 const char *passport;
1615 char *psm_str, *str; 1615 char *psm_str, *str;
1616 CurrentMedia media = {CURRENT_MEDIA_UNKNOWN, NULL, NULL, NULL}; 1616 CurrentMedia *media = NULL;
1617 1617
1618 session = cmdproc->session; 1618 session = cmdproc->session;
1619 account = session->account; 1619 account = session->account;
1620 1620
1621 passport = cmd->params[0]; 1621 passport = cmd->params[0];
1632 psm_str = msn_get_psm(cmd->payload,len); 1632 psm_str = msn_get_psm(cmd->payload,len);
1633 msn_user_set_statusline(user, psm_str); 1633 msn_user_set_statusline(user, psm_str);
1634 g_free(psm_str); 1634 g_free(psm_str);
1635 1635
1636 str = msn_get_currentmedia(cmd->payload, len); 1636 str = msn_get_currentmedia(cmd->payload, len);
1637 if (msn_parse_currentmedia(str, &media)) 1637 media = msn_parse_currentmedia(str);
1638 msn_user_set_currentmedia(user, &media);
1639 else
1640 msn_user_set_currentmedia(user, NULL);
1641 g_free(media.title);
1642 g_free(media.album);
1643 g_free(media.artist);
1644 g_free(str); 1638 g_free(str);
1645
1646 } else { 1639 } else {
1647 msn_user_set_statusline(user, NULL); 1640 msn_user_set_statusline(user, NULL);
1648 msn_user_set_currentmedia(user, NULL); 1641 }
1649 } 1642 msn_user_set_currentmedia(user, media);
1650 1643
1651 msn_user_update(user); 1644 msn_user_update(user);
1652 } 1645 }
1653 1646
1654 static void 1647 static void