From 4b846aa7efc67f6e01f2e4344d8da0a298d172b8 Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Mon, 2 May 2011 10:10:17 +0200 Subject: individual_store_get_individual_status_icon_with_icon_name: look in the cache before creating new pixbuf --- libempathy-gtk/empathy-individual-store.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libempathy-gtk/empathy-individual-store.c b/libempathy-gtk/empathy-individual-store.c index 735e2db9d..b550245dc 100644 --- a/libempathy-gtk/empathy-individual-store.c +++ b/libempathy-gtk/empathy-individual-store.c @@ -1921,7 +1921,7 @@ individual_store_get_individual_status_icon_with_icon_name ( FolksIndividual *individual, const gchar *status_icon_name) { - GdkPixbuf *pixbuf_status = NULL; + GdkPixbuf *pixbuf_status; EmpathyIndividualStorePriv *priv; const gchar *protocol_name = NULL; gchar *icon_name = NULL; @@ -1953,13 +1953,18 @@ individual_store_get_individual_status_icon_with_icon_name ( { icon_name = g_strdup_printf ("%s", status_icon_name); } + + pixbuf_status = g_hash_table_lookup (priv->status_icons, icon_name); + if (pixbuf_status == NULL) { pixbuf_status = empathy_pixbuf_contact_status_icon_with_icon_name (contact, status_icon_name, show_protocols_here); + if (pixbuf_status != NULL) { + /* pass the reference to the hash table */ g_hash_table_insert (priv->status_icons, g_strdup (icon_name), pixbuf_status); } -- cgit v1.2.3