libpurple/protocols/bonjour/mdns_common.c

branch
soc.2013.gobjectification.plugins
changeset 37134
07746c9a04bf
parent 36708
4b7b5964754a
parent 35822
237ad851330e
child 38298
f0a8f63f9312
--- a/libpurple/protocols/bonjour/mdns_common.c	Mon Apr 07 20:02:22 2014 +0530
+++ b/libpurple/protocols/bonjour/mdns_common.c	Fri Apr 11 16:23:12 2014 +0530
@@ -179,35 +179,27 @@
 }
 
 void bonjour_dns_sd_update_buddy_icon(BonjourDnsSd *data) {
-	PurpleStoredImage *img;
+	PurpleImage *img;
 
 	if ((img = purple_buddy_icons_find_account_icon(data->account))) {
 		gconstpointer avatar_data;
 		gsize avatar_len;
 
-		avatar_data = purple_imgstore_get_data(img);
-		avatar_len = purple_imgstore_get_size(img);
+		avatar_data = purple_image_get_data(img);
+		avatar_len = purple_image_get_size(img);
 
 		if (_mdns_set_buddy_icon_data(data, avatar_data, avatar_len)) {
-			/* The filename is a SHA-1 hash of the data (conveniently what we need) */
-			const char *p, *filename = purple_imgstore_get_filename(img);
-
 			g_free(data->phsh);
 			data->phsh = NULL;
 
-			/* Get rid of the extension */
-			p = strchr(filename, '.');
-			if (p)
-				data->phsh = g_strndup(filename, p - filename);
-			else
-				purple_debug_error("bonjour", "account buddy icon returned unexpected filename (%s)"
-								"; unable to extract hash. Clearing buddy icon\n", filename);
+			data->phsh = g_compute_checksum_for_data(
+				G_CHECKSUM_SHA1, avatar_data, avatar_len);
 
 			/* Update our TXT record */
 			publish_presence(data, PUBLISH_UPDATE);
 		}
 
-		purple_imgstore_unref(img);
+		g_object_unref(img);
 	} else {
 		/* We need to do this regardless of whether data->phsh is set so that we
 		 * cancel any icons that are currently in the process of being set */

mercurial