comparison 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
comparison
equal deleted inserted replaced
18798:ed1def07d86e 18799:83719d57a8ee
154 "message", bonjour_buddy->msg, NULL); 154 "message", bonjour_buddy->msg, NULL);
155 else 155 else
156 purple_prpl_got_user_status(account, buddy->name, status_id, NULL); 156 purple_prpl_got_user_status(account, buddy->name, status_id, NULL);
157 157
158 purple_prpl_got_user_idle(account, buddy->name, FALSE, 0); 158 purple_prpl_got_user_idle(account, buddy->name, FALSE, 0);
159
160 /* TODO: Because we don't save Bonjour buddies in blist.xml,
161 * we will always have to look up the buddy icon at login time.
162 * I think we should figure out a way to do something about this. */
163
164 /* Deal with the buddy icon */
165 old_hash = purple_buddy_icons_get_checksum_for_user(buddy);
166 new_hash = (bonjour_buddy->phsh && *(bonjour_buddy->phsh)) ? bonjour_buddy->phsh : NULL;
167 if (new_hash && (!old_hash || strcmp(old_hash, new_hash) != 0)) {
168 /* Look up the new icon data */
169 bonjour_dns_sd_retrieve_buddy_icon(bonjour_buddy);
170 } else
171 purple_buddy_icons_set_for_user(account, buddy->name, NULL, 0, NULL);
159 } 172 }
160 173
161 /** 174 /**
162 * Deletes a buddy from memory. 175 * Deletes a buddy from memory.
163 */ 176 */
164 void 177 void
165 bonjour_buddy_delete(BonjourBuddy *buddy) 178 bonjour_buddy_delete(BonjourBuddy *buddy)
166 { 179 {
167 g_free(buddy->name); 180 g_free(buddy->name);
168 g_free(buddy->ip); 181 g_free(buddy->ip);
182 g_free(buddy->full_service_name);
169 183
170 g_free(buddy->first); 184 g_free(buddy->first);
171 g_free(buddy->phsh); 185 g_free(buddy->phsh);
172 g_free(buddy->status); 186 g_free(buddy->status);
173 g_free(buddy->email); 187 g_free(buddy->email);