Mercurial > pidgin.yaz
diff libpurple/protocols/bonjour/buddy.c @ 18799:83719d57a8ee
Implement bonjour buddy icons in the win32 implementation. Avahi's howl wrapper doesn't implement sw_discovery_query_record(), so we can't do it elsewhere yet.
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Sun, 05 Aug 2007 02:50:48 +0000 |
parents | ed1def07d86e |
children | 7bf6b9a70b41 |
line wrap: on
line diff
--- a/libpurple/protocols/bonjour/buddy.c Sun Aug 05 02:44:53 2007 +0000 +++ b/libpurple/protocols/bonjour/buddy.c Sun Aug 05 02:50:48 2007 +0000 @@ -156,6 +156,19 @@ purple_prpl_got_user_status(account, buddy->name, status_id, NULL); purple_prpl_got_user_idle(account, buddy->name, FALSE, 0); + + /* TODO: Because we don't save Bonjour buddies in blist.xml, + * we will always have to look up the buddy icon at login time. + * I think we should figure out a way to do something about this. */ + + /* Deal with the buddy icon */ + old_hash = purple_buddy_icons_get_checksum_for_user(buddy); + new_hash = (bonjour_buddy->phsh && *(bonjour_buddy->phsh)) ? bonjour_buddy->phsh : NULL; + if (new_hash && (!old_hash || strcmp(old_hash, new_hash) != 0)) { + /* Look up the new icon data */ + bonjour_dns_sd_retrieve_buddy_icon(bonjour_buddy); + } else + purple_buddy_icons_set_for_user(account, buddy->name, NULL, 0, NULL); } /** @@ -166,6 +179,7 @@ { g_free(buddy->name); g_free(buddy->ip); + g_free(buddy->full_service_name); g_free(buddy->first); g_free(buddy->phsh);