Merged in default (pull request #416)

Fri, 02 Nov 2018 01:37:22 +0000

author
Gary Kramlich <grim@reaperworld.com>
date
Fri, 02 Nov 2018 01:37:22 +0000
changeset 39263
ad2bcb22e4a9
parent 39261
183db900957f (current diff)
parent 39262
53c6b966ac05 (diff)
child 39269
3e6eb178b03b
child 39273
820a44d3d618
child 39286
9fd8469a1432
child 39291
9d253537d927

Merged in default (pull request #416)

screencap: Fix converting GdkPixbuf to PurpleImage

Approved-by: Elliott Sales de Andrade
Approved-by: Gary Kramlich
Approved-by: Eion Robb

--- a/pidgin/plugins/screencap.c	Fri Nov 02 01:24:29 2018 +0000
+++ b/pidgin/plugins/screencap.c	Fri Nov 02 01:37:22 2018 +0000
@@ -117,34 +117,24 @@
 	}
 }
 
-static gboolean
-scrncap_pixbuf_to_image_cb(const gchar *buf, gsize count, GError **error,
-	gpointer data)
-{
-	PurpleImage *image = *(PurpleImage **)data;
-
-	image = purple_image_new_from_data(buf, count);
-
-	return TRUE;
-}
-
 static PurpleImage *
 scrncap_pixbuf_to_image(GdkPixbuf *pixbuf)
 {
 	PurpleImage *image = NULL;
+	gchar *buffer;
+	gsize count;
 	GError *error = NULL;
 
-	gdk_pixbuf_save_to_callback(pixbuf, scrncap_pixbuf_to_image_cb, &image,
-		"png", &error, NULL);
-
-	if (error != NULL) {
+	if (!gdk_pixbuf_save_to_buffer(pixbuf, &buffer, &count, "png",
+			&error, NULL)) {
 		purple_debug_error("screencap", "Failed saving an image: %s",
 			error->message);
 		g_error_free(error);
-		g_object_unref(image);
 		return NULL;
 	}
 
+	image = purple_image_new_take_data((guint8 *)buffer, count);
+
 	if (purple_image_get_extension(image) == NULL) {
 		purple_debug_error("screencap", "Invalid image format");
 		g_object_unref(image);

mercurial