[empathy/gnome-2-32] properly manage the reference of the pixbuf returned by empathy_pixbuf_avatar_from_individual_scaled



commit 0e3268df1dbe7ea6698cf6eed8982537274e726f
Author: Guillaume Desmottes <guillaume desmottes collabora co uk>
Date:   Wed Nov 24 16:34:13 2010 +0100

    properly manage the reference of the pixbuf returned by empathy_pixbuf_avatar_from_individual_scaled_finish

 libempathy-gtk/empathy-individual-store.c |    1 +
 libempathy-gtk/empathy-ui-utils.c         |    7 +++++--
 2 files changed, 6 insertions(+), 2 deletions(-)
---
diff --git a/libempathy-gtk/empathy-individual-store.c b/libempathy-gtk/empathy-individual-store.c
index 4d194c0..5cbba42 100644
--- a/libempathy-gtk/empathy-individual-store.c
+++ b/libempathy-gtk/empathy-individual-store.c
@@ -635,6 +635,7 @@ individual_avatar_pixbuf_received_cb (FolksIndividual *individual,
           data->cancellable);
     }
 
+  tp_clear_object (&pixbuf);
   g_object_unref (data->cancellable);
   g_slice_free (LoadAvatarData, data);
 }
diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c
index 4014f92..23cc359 100644
--- a/libempathy-gtk/empathy-ui-utils.c
+++ b/libempathy-gtk/empathy-ui-utils.c
@@ -603,7 +603,7 @@ avatar_file_load_contents_cb (GObject      *object,
 	}
 
 	g_simple_async_result_set_op_res_gpointer (closure->result,
-			avatar_pixbuf_from_loader (loader), NULL);
+			avatar_pixbuf_from_loader (loader), g_object_unref);
 
 out:
 	g_simple_async_result_complete (closure->result);
@@ -653,6 +653,7 @@ out:
 	g_object_unref (result);
 }
 
+/* Return a ref on the GdkPixbuf */
 GdkPixbuf *
 empathy_pixbuf_avatar_from_individual_scaled_finish (
 		FolksIndividual *individual,
@@ -661,6 +662,7 @@ empathy_pixbuf_avatar_from_individual_scaled_finish (
 {
 	GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (result);
 	gboolean result_valid;
+	GdkPixbuf *pixbuf;
 
 	g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual), NULL);
 	g_return_val_if_fail (G_IS_SIMPLE_ASYNC_RESULT (simple), NULL);
@@ -673,7 +675,8 @@ empathy_pixbuf_avatar_from_individual_scaled_finish (
 			empathy_pixbuf_avatar_from_individual_scaled_async);
 	g_return_val_if_fail (result_valid, NULL);
 
-	return g_simple_async_result_get_op_res_gpointer (simple);
+	pixbuf = g_simple_async_result_get_op_res_gpointer (simple);
+	return pixbuf != NULL ? g_object_ref (pixbuf) : NULL;
 }
 
 GdkPixbuf *



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]