aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2011-05-02 16:10:17 +0800
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2011-05-02 17:12:32 +0800
commit4b846aa7efc67f6e01f2e4344d8da0a298d172b8 (patch)
treef5220cb53bdc42e943b4bf33f999f826b61c91e3
parentee02e3e2da01c356c6883fa51b2d5cf1cac7318c (diff)
downloadgsoc2013-empathy-4b846aa7efc67f6e01f2e4344d8da0a298d172b8.tar
gsoc2013-empathy-4b846aa7efc67f6e01f2e4344d8da0a298d172b8.tar.gz
gsoc2013-empathy-4b846aa7efc67f6e01f2e4344d8da0a298d172b8.tar.bz2
gsoc2013-empathy-4b846aa7efc67f6e01f2e4344d8da0a298d172b8.tar.lz
gsoc2013-empathy-4b846aa7efc67f6e01f2e4344d8da0a298d172b8.tar.xz
gsoc2013-empathy-4b846aa7efc67f6e01f2e4344d8da0a298d172b8.tar.zst
gsoc2013-empathy-4b846aa7efc67f6e01f2e4344d8da0a298d172b8.zip
individual_store_get_individual_status_icon_with_icon_name: look in the cache before creating new pixbuf
-rw-r--r--libempathy-gtk/empathy-individual-store.c7
1 files changed, 6 insertions, 1 deletions
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);
}