From 40c4ab233760e3ed62764ecfc0a354457dbf405a Mon Sep 17 00:00:00 2001
From: Denis Fomin <fominde@gmail.com>
Date: Sun, 26 Feb 2012 19:33:35 +0400
Subject: [PATCH] clients_icons.[Mic92].Improve performance enormous

---
 clients_icons/clients_icons.py | 9 +++++++--
 clients_icons/manifest.ini     | 2 +-
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/clients_icons/clients_icons.py b/clients_icons/clients_icons.py
index 1e349d2a..584a7fb0 100644
--- a/clients_icons/clients_icons.py
+++ b/clients_icons/clients_icons.py
@@ -167,6 +167,7 @@ class ClientsIconsPlugin(GajimPlugin):
         icon_path = os.path.join(self.local_file_path('icons'), 'unknown.png')
         self.default_pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(icon_path,
             16, 16)
+        self.icon_cache = {}
 
     @log_calls('ClientsIconsPlugin')
     def connect_with_roster_draw_contact(self, roster, jid, account, contact):
@@ -379,8 +380,12 @@ class ClientsIconsPlugin(GajimPlugin):
         else:
             icon_path = os.path.join(self.local_file_path('icons'),
                 client_icon)
-            pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(icon_path, 16, 16)
-            model[iter_][pos] = pixbuf
+            if icon_path in self.icon_cache:
+                model[iter_][pos] = self.icon_cache[icon_path]
+            else:
+                pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(icon_path, 16, 16)
+                model[iter_][pos] = pixbuf
+                self.icon_cache[icon_path] = pixbuf
 
     def tree_cell_data_func(self, column, renderer, model, iter_, control):
         if not model.iter_parent(iter_):
diff --git a/clients_icons/manifest.ini b/clients_icons/manifest.ini
index 68046e84..71a72df1 100644
--- a/clients_icons/manifest.ini
+++ b/clients_icons/manifest.ini
@@ -7,4 +7,4 @@ description: Shows the client icons in the roster
  Depends: Gajim > r12506
 authors = Denis Fomin <fominde@gmail.com>
  Artem Klyop <art.klyop@gmail.com>
-homepage = http://trac-plugins.gajim.org/wiki/ClientsIcons
+homepage = http://trac-plugins.gajim.org/wiki/ClientsIconsPlugin
-- 
GitLab