changeset 12476:18b16e801e6f

[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 <tailor@pidgin.im>
author Richard Laager <rlaager@wiktel.com>
date Tue, 13 Dec 2005 08:10:28 +0000
parents 572d6d5da418
children d90eae2387b5
files src/blist.c
diffstat 1 files changed, 6 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- 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);