diff options
author | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2010-11-24 23:34:13 +0800 |
---|---|---|
committer | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2010-11-25 00:06:03 +0800 |
commit | 0e3268df1dbe7ea6698cf6eed8982537274e726f (patch) | |
tree | 073435ee13dceead9d7848cd5d58b37630763741 /libempathy-gtk | |
parent | cfbd6ef2464d68d9d482a9a24c792de657ded74a (diff) | |
download | gsoc2013-empathy-0e3268df1dbe7ea6698cf6eed8982537274e726f.tar gsoc2013-empathy-0e3268df1dbe7ea6698cf6eed8982537274e726f.tar.gz gsoc2013-empathy-0e3268df1dbe7ea6698cf6eed8982537274e726f.tar.bz2 gsoc2013-empathy-0e3268df1dbe7ea6698cf6eed8982537274e726f.tar.lz gsoc2013-empathy-0e3268df1dbe7ea6698cf6eed8982537274e726f.tar.xz gsoc2013-empathy-0e3268df1dbe7ea6698cf6eed8982537274e726f.tar.zst gsoc2013-empathy-0e3268df1dbe7ea6698cf6eed8982537274e726f.zip |
properly manage the reference of the pixbuf returned by empathy_pixbuf_avatar_from_individual_scaled_finish
Diffstat (limited to 'libempathy-gtk')
-rw-r--r-- | libempathy-gtk/empathy-individual-store.c | 1 | ||||
-rw-r--r-- | 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 4d194c0e0..5cbba420d 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 4014f92b5..23cc35973 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 * |