diff --git a/gtk+-2.10.13-dont-cache-icon-pixbufs.patch b/gtk+-2.10.13-dont-cache-icon-pixbufs.patch deleted file mode 100644 index 45e9e99..0000000 --- a/gtk+-2.10.13-dont-cache-icon-pixbufs.patch +++ /dev/null @@ -1,148 +0,0 @@ ---- gtk-2.10.13/gtk/gtkrecentmanager.c (revision 18287) -+++ gtk-2.10.13/gtk/gtkrecentmanager.c (revision 18288) -@@ -1847,106 +1847,56 @@ - return g_strdup (name); - } - --typedef struct --{ -- gint size; -- GdkPixbuf *pixbuf; --} IconCacheElement; -- --static void --icon_cache_element_free (IconCacheElement *element) --{ -- if (element->pixbuf) -- g_object_unref (element->pixbuf); -- g_free (element); --} -- --static void --icon_theme_changed (GtkIconTheme *icon_theme) --{ -- GHashTable *cache; -- -- /* Difference from the initial creation is that we don't -- * reconnect the signal -- */ -- cache = g_hash_table_new_full (g_str_hash, g_str_equal, -- (GDestroyNotify)g_free, -- (GDestroyNotify)icon_cache_element_free); -- g_object_set_data_full (G_OBJECT (icon_theme), "gtk-recent-icon-cache", -- cache, (GDestroyNotify)g_hash_table_destroy); --} -- --/* TODO: use the GtkFileChooser's icon cache instead of our own to reduce -- * the memory footprint -- */ - static GdkPixbuf * --get_cached_icon (const gchar *name, -- gint pixel_size) --{ -- GtkIconTheme *icon_theme; -- GHashTable *cache; -- IconCacheElement *element; -- -- icon_theme = gtk_icon_theme_get_default (); -- cache = g_object_get_data (G_OBJECT (icon_theme), "gtk-recent-icon-cache"); -- -- if (!cache) -- { -- cache = g_hash_table_new_full (g_str_hash, g_str_equal, -- (GDestroyNotify)g_free, -- (GDestroyNotify)icon_cache_element_free); -- -- g_object_set_data_full (G_OBJECT (icon_theme), "gtk-recent-icon-cache", -- cache, (GDestroyNotify)g_hash_table_destroy); -- g_signal_connect (icon_theme, "changed", -- G_CALLBACK (icon_theme_changed), NULL); -- } -- -- element = g_hash_table_lookup (cache, name); -- if (!element) -- { -- element = g_new0 (IconCacheElement, 1); -- g_hash_table_insert (cache, g_strdup (name), element); -- } -- -- if (element->size != pixel_size) -- { -- if (element->pixbuf) -- g_object_unref (element->pixbuf); -- -- element->size = pixel_size; -- element->pixbuf = gtk_icon_theme_load_icon (icon_theme, name, -- pixel_size, 0, NULL); -- } -- -- return element->pixbuf ? g_object_ref (element->pixbuf) : NULL; --} -- -- --static GdkPixbuf * - get_icon_for_mime_type (const char *mime_type, - gint pixel_size) - { -+ GtkIconTheme *icon_theme; - const char *separator; - GString *icon_name; - GdkPixbuf *pixbuf; - - separator = strchr (mime_type, '/'); - if (!separator) -- return NULL; /* maybe we should return a GError with "invalid MIME-type" */ -+ return NULL; - -+ icon_theme = gtk_icon_theme_get_default (); -+ -+ /* try with the three icon name variants for MIME types */ -+ -+ /* canonicalize MIME type: foo/x-bar -> foo-x-bar */ -+ icon_name = g_string_new (NULL); -+ g_string_append_len (icon_name, mime_type, separator - mime_type); -+ g_string_append_c (icon_name, '-'); -+ g_string_append (icon_name, separator + 1); -+ pixbuf = gtk_icon_theme_load_icon (icon_theme, icon_name->str, -+ pixel_size, -+ 0, -+ NULL); -+ g_string_free (icon_name, TRUE); -+ if (pixbuf) -+ return pixbuf; -+ -+ /* canonicalize MIME type, and prepend "gnome-mime-" */ - icon_name = g_string_new ("gnome-mime-"); - g_string_append_len (icon_name, mime_type, separator - mime_type); - g_string_append_c (icon_name, '-'); - g_string_append (icon_name, separator + 1); -- pixbuf = get_cached_icon (icon_name->str, pixel_size); -+ pixbuf = gtk_icon_theme_load_icon (icon_theme, icon_name->str, -+ pixel_size, -+ 0, -+ NULL); - g_string_free (icon_name, TRUE); - if (pixbuf) - return pixbuf; - -+ /* try the MIME family icon */ - icon_name = g_string_new ("gnome-mime-"); - g_string_append_len (icon_name, mime_type, separator - mime_type); -- pixbuf = get_cached_icon (icon_name->str, pixel_size); -+ pixbuf = gtk_icon_theme_load_icon (icon_theme, icon_name->str, -+ pixel_size, -+ 0, -+ NULL); - g_string_free (icon_name, TRUE); - - return pixbuf; -@@ -1995,7 +1945,8 @@ - /* this function should never fail */ - if (!retval) - { -- if (info->mime_type && strcmp (info->mime_type, "x-directory/normal") == 0) -+ if (info->mime_type && -+ strcmp (info->mime_type, "x-directory/normal") == 0) - retval = get_icon_fallback (GTK_STOCK_DIRECTORY, size); - else - retval = get_icon_fallback (GTK_STOCK_FILE, size); diff --git a/gtk2.spec b/gtk2.spec index 668da24..4afec94 100644 --- a/gtk2.spec +++ b/gtk2.spec @@ -30,10 +30,6 @@ Patch1: gtk+-2.11.1-set-invisible-char-to-bullet.patch # use fam for recent-files #Patch2: gtk+-2.10.3-fam.patch -# http://bugzilla.gnome.org/show_bug.cgi?id=426987 -# http://bugzilla.gnome.org/show_bug.cgi?id=446183 -Patch3: gtk+-2.10.13-dont-cache-icon-pixbufs.patch - BuildRequires: atk-devel >= %{atk_version} BuildRequires: pango-devel >= %{pango_version} BuildRequires: glib2-devel >= %{glib2_version} @@ -119,7 +115,6 @@ docs for the GTK+ widget toolkit. %patch0 -p1 -b .lib64 %patch1 -p1 -b .set-invisible-char-to-bullet #%patch2 -p1 -b .fam -%patch3 -p1 -b .dont-cache-icon-pixbufs for i in config.guess config.sub ; do test -f %{_datadir}/libtool/$i && cp %{_datadir}/libtool/$i . @@ -287,11 +282,6 @@ rm -rf $RPM_BUILD_ROOT %doc tmpdocs/examples %changelog -* Sun Jul 8 2007 Ray Strode - 2.11.5-2 -- don't cache icon pixbufs in recentmanager code, - Patch by Emmanuele Bassi , - gnome bug 426987 - * Mon Jul 2 2007 Matthias Clasen - 2.11.5-1 - Update to 2.11.5