diff --git a/clients_icons/clients_icons.py b/clients_icons/clients_icons.py index 1e349d2a7045a6e512be62d48a6d74448cb7edb7..584a7fb088d796223ae7ff5d95befa6499a27f67 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 68046e840a9725ec31202d070698584e6b9edc48..71a72df13520c7e9c37c2a83d78de7044694eded 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