From: <ev...@us...> - 2006-12-22 08:29:32
|
Revision: 18045 http://svn.sourceforge.net/gaim/?rev=18045&view=rev Author: evands Date: 2006-12-22 00:29:28 -0800 (Fri, 22 Dec 2006) Log Message: ----------- We occasionally get to gaim_parse_oncoming() with a user_info indicating a NULL away message for a contact who (1) is away and is still away and (2) does actually have a message. gaim_got_infoblock() will then be called shortly thereafter. Check to ensure that the call to gaim_prpl_got_user_status() has some benefit other than potentially removing an appropriate away message; do the call if the status actually changes as a result. This fixes an issue in which away messages would periodically flicker invisible and then visible again in the contact list for certain contacts. Modified Paths: -------------- trunk/libgaim/protocols/oscar/oscar.c Modified: trunk/libgaim/protocols/oscar/oscar.c =================================================================== --- trunk/libgaim/protocols/oscar/oscar.c 2006-12-22 06:59:05 UTC (rev 18044) +++ trunk/libgaim/protocols/oscar/oscar.c 2006-12-22 08:29:28 UTC (rev 18045) @@ -1774,8 +1774,18 @@ g_free(message); } else - gaim_prpl_got_user_status(account, info->sn, status_id, NULL); - + { + GaimBuddy *b = gaim_find_buddy(account, info->sn); + GaimStatus *status; + const char *active_status_id; + + status = gaim_presence_get_active_status(gaim_buddy_get_presence(b)); + active_status_id = gaim_status_get_id(status); + + if (!active_status_id || strcmp(active_status_id, status_id)) + gaim_prpl_got_user_status(account, info->sn, status_id, NULL); + } + /* Login time stuff */ if (info->present & AIM_USERINFO_PRESENT_ONLINESINCE) signon = info->onlinesince; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |