aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy-gtk/empathy-individual-store.c
diff options
context:
space:
mode:
authorTravis Reitter <treitter@gmail.com>2010-07-09 02:01:02 +0800
committerTravis Reitter <treitter@gmail.com>2010-07-21 07:12:36 +0800
commitebea339331d9c7a8eb69c125bd261ab60b3781eb (patch)
treeef2d14e34193dfcc16882d19f13f9486bd56043d /libempathy-gtk/empathy-individual-store.c
parentc922fe784e177fa328f987e0a8cd84b0de10f019 (diff)
downloadgsoc2013-empathy-ebea339331d9c7a8eb69c125bd261ab60b3781eb.tar
gsoc2013-empathy-ebea339331d9c7a8eb69c125bd261ab60b3781eb.tar.gz
gsoc2013-empathy-ebea339331d9c7a8eb69c125bd261ab60b3781eb.tar.bz2
gsoc2013-empathy-ebea339331d9c7a8eb69c125bd261ab60b3781eb.tar.lz
gsoc2013-empathy-ebea339331d9c7a8eb69c125bd261ab60b3781eb.tar.xz
gsoc2013-empathy-ebea339331d9c7a8eb69c125bd261ab60b3781eb.tar.zst
gsoc2013-empathy-ebea339331d9c7a8eb69c125bd261ab60b3781eb.zip
Use the gio async pattern for fetching Individuals' avatars
Diffstat (limited to 'libempathy-gtk/empathy-individual-store.c')
-rw-r--r--libempathy-gtk/empathy-individual-store.c37
1 files changed, 27 insertions, 10 deletions
diff --git a/libempathy-gtk/empathy-individual-store.c b/libempathy-gtk/empathy-individual-store.c
index 4a3b68653..e97b94e88 100644
--- a/libempathy-gtk/empathy-individual-store.c
+++ b/libempathy-gtk/empathy-individual-store.c
@@ -524,20 +524,36 @@ individual_store_contact_active_cb (ShowActiveData *data)
}
static void
-individual_avatar_pixbuf_received_cb (FolksIndividual *individual,
- GdkPixbuf *pixbuf,
+individual_avatar_pixbuf_received_cb (GObject *object,
+ GAsyncResult *result,
gpointer user_data)
{
+ FolksIndividual *individual = FOLKS_INDIVIDUAL (object);
EmpathyIndividualStore *self = user_data;
- GList *iters, *l;
+ GError *error = NULL;
+ GdkPixbuf *pixbuf;
- iters = individual_store_find_contact (self, individual);
+ pixbuf = empathy_pixbuf_avatar_from_individual_scaled_finish (individual,
+ result, &error);
- for (l = iters; l; l = l->next)
+ if (error != NULL)
{
- gtk_tree_store_set (GTK_TREE_STORE (self), l->data,
- EMPATHY_INDIVIDUAL_STORE_COL_PIXBUF_AVATAR, pixbuf,
- -1);
+ DEBUG ("failed to retrieve pixbuf for individual %s: %s",
+ folks_individual_get_alias (individual),
+ error->message);
+ g_clear_error (&error);
+ }
+ else
+ {
+ GList *iters, *l;
+
+ iters = individual_store_find_contact (self, individual);
+ for (l = iters; l; l = l->next)
+ {
+ gtk_tree_store_set (GTK_TREE_STORE (self), l->data,
+ EMPATHY_INDIVIDUAL_STORE_COL_PIXBUF_AVATAR, pixbuf,
+ -1);
+ }
}
}
@@ -671,8 +687,9 @@ individual_store_contact_update (EmpathyIndividualStore *self,
show_avatar = TRUE;
}
- empathy_pixbuf_avatar_from_individual_scaled_async (individual, 32, 32,
- individual_avatar_pixbuf_received_cb, self);
+ empathy_pixbuf_avatar_from_individual_scaled_async (individual,
+ individual_avatar_pixbuf_received_cb, 32, 32, self);
+
pixbuf_status =
empathy_individual_store_get_individual_status_icon (self, individual);