Mercurial > pidgin.yaz
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 |