# HG changeset patch # User Richard Laager # Date 1134461428 0 # Node ID 18b16e801e6fdedb797a24cea9984d5125493b64 # Parent 572d6d5da418939f8efbb5626d457bd56510f15b [gaim-migrate @ 14787] SF Patch #1379107 from evands 'Properly notify the UI when a buddy icon changes gaim_buddy_set_icon() currently does nothing if the incoming GaimBuddyIcon* is the same as buddy->icon. This is wrong, however, because gaim_buddy_icon_new() will recycle an existing GaimBuddyIcon* object for the buddy, replacing its data with the new buddy icon data, if possible. The recycling means that just because (icon == buddy->icon) we can't assume nothing has changed. This patch makes the "buddy-icon-changed" signal be sent and the gaim_blist_update_buddy_icon() function be called appropriately when the buddy icon changes. Call stack that gets us here from prpl code, for those keeping score at home: gaim_buddy_icons_set_for_user() -> gaim_buddy_icon_new() -> gaim_buddy_icon_set_data() -> gaim_buddy_icon_update() -> gaim_buddy_set_icon()' committer: Tailor Script diff -r 572d6d5da418 -r 18b16e801e6f src/blist.c --- a/src/blist.c Tue Dec 13 08:04:13 2005 +0000 +++ b/src/blist.c Tue Dec 13 08:10:28 2005 +0000 @@ -1122,14 +1122,12 @@ { g_return_if_fail(buddy != NULL); - if (buddy->icon == icon) - /* Don't need to do anything */ - return; - - if (buddy->icon != NULL) - gaim_buddy_icon_unref(buddy->icon); - - buddy->icon = (icon != NULL ? gaim_buddy_icon_ref(icon) : NULL); + if (buddy->icon != icon) { + if (buddy->icon != NULL) + gaim_buddy_icon_unref(buddy->icon); + + buddy->icon = (icon != NULL ? gaim_buddy_icon_ref(icon) : NULL); + } if (buddy->icon) gaim_buddy_icon_cache(icon, buddy);