[gaim-migrate @ 14787]

Tue, 13 Dec 2005 08:10:28 +0000

author
Evan Schoenberg <evands@pidgin.im>
date
Tue, 13 Dec 2005 08:10:28 +0000
changeset 12476
c4e21f4ab5a7
parent 12475
e9d9c08d21ef
child 12477
9328971aff14

[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: Richard Laager <rlaager@pidgin.im>

src/blist.c file | annotate | diff | comparison | revisions
--- 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);

mercurial