diff options
author | Matthias Clasen <mclasen@redhat.com> | 2005-08-22 16:38:46 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2005-08-22 16:38:46 +0000 |
commit | 97ec1cdf4f8d16906f43ef02c11ac13b96d22ad2 (patch) | |
tree | 3e38b4293c0f3fe5ef231e8c054689cf2f947b5c | |
parent | e337f0cf190deea7be5ef541320b1deb2f417e35 (diff) | |
download | gtk+-97ec1cdf4f8d16906f43ef02c11ac13b96d22ad2.tar.gz |
Add a note regarding icon theme changes.
2005-08-22 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkicontheme.c (gtk_icon_theme_load_icon): Add a note
regarding icon theme changes.
* gtk/gtkiconcache.c (_gtk_icon_cache_get_icon): When returning
pixbufs which are backed by the mmapped memory of an icon cache,
increase the refcount of the icon cache, so that the memory is not
munmapped away underneath the pixbuf upon icon theme changes.
(#314170, Kjartan Maraas)
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 9 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 9 | ||||
-rw-r--r-- | gtk/gtkiconcache.c | 18 | ||||
-rw-r--r-- | gtk/gtkicontheme.c | 8 |
5 files changed, 52 insertions, 1 deletions
@@ -1,5 +1,14 @@ 2005-08-22 Matthias Clasen <mclasen@redhat.com> + * gtk/gtkicontheme.c (gtk_icon_theme_load_icon): Add a note + regarding icon theme changes. + + * gtk/gtkiconcache.c (_gtk_icon_cache_get_icon): When returning + pixbufs which are backed by the mmapped memory of an icon cache, + increase the refcount of the icon cache, so that the memory is not + munmapped away underneath the pixbuf upon icon theme changes. + (#314170, Kjartan Maraas) + * docs/tools/Makefile.am (LDADDS): Add GTK_DEP_LIBS, in order to link against Xext. (#314062) diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index cefda3d868..841ba490e0 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,5 +1,14 @@ 2005-08-22 Matthias Clasen <mclasen@redhat.com> + * gtk/gtkicontheme.c (gtk_icon_theme_load_icon): Add a note + regarding icon theme changes. + + * gtk/gtkiconcache.c (_gtk_icon_cache_get_icon): When returning + pixbufs which are backed by the mmapped memory of an icon cache, + increase the refcount of the icon cache, so that the memory is not + munmapped away underneath the pixbuf upon icon theme changes. + (#314170, Kjartan Maraas) + * docs/tools/Makefile.am (LDADDS): Add GTK_DEP_LIBS, in order to link against Xext. (#314062) diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index cefda3d868..841ba490e0 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,5 +1,14 @@ 2005-08-22 Matthias Clasen <mclasen@redhat.com> + * gtk/gtkicontheme.c (gtk_icon_theme_load_icon): Add a note + regarding icon theme changes. + + * gtk/gtkiconcache.c (_gtk_icon_cache_get_icon): When returning + pixbufs which are backed by the mmapped memory of an icon cache, + increase the refcount of the icon cache, so that the memory is not + munmapped away underneath the pixbuf upon icon theme changes. + (#314170, Kjartan Maraas) + * docs/tools/Makefile.am (LDADDS): Add GTK_DEP_LIBS, in order to link against Xext. (#314062) diff --git a/gtk/gtkiconcache.c b/gtk/gtkiconcache.c index 8faca64a64..2af6958de7 100644 --- a/gtk/gtkiconcache.c +++ b/gtk/gtkiconcache.c @@ -326,7 +326,16 @@ _gtk_icon_cache_has_icon (GtkIconCache *cache, return FALSE; } - + +static void +pixbuf_destroy_cb (guchar *pixels, + gpointer data) +{ + GtkIconCache *cache = data; + + _gtk_icon_cache_unref (cache); +} + GdkPixbuf * _gtk_icon_cache_get_icon (GtkIconCache *cache, const gchar *icon_name, @@ -371,6 +380,11 @@ _gtk_icon_cache_get_icon (GtkIconCache *cache, pixbuf = gdk_pixbuf_from_pixdata (&pixdata, FALSE, &error); + pixbuf = gdk_pixbuf_new_from_data (pixdata.pixel_data, GDK_COLORSPACE_RGB, + (pixdata.pixdata_type & GDK_PIXDATA_COLOR_TYPE_MASK) == GDK_PIXDATA_COLOR_TYPE_RGBA, + 8, pixdata.width, pixdata.height, pixdata.rowstride, + (GdkPixbufDestroyNotify)pixbuf_destroy_cb, + cache); if (!pixbuf) { GTK_NOTE (ICONTHEME, @@ -380,6 +394,8 @@ _gtk_icon_cache_get_icon (GtkIconCache *cache, return NULL; } + _gtk_icon_cache_ref (cache); + return pixbuf; } diff --git a/gtk/gtkicontheme.c b/gtk/gtkicontheme.c index accdba51a3..360a5c7b44 100644 --- a/gtk/gtkicontheme.c +++ b/gtk/gtkicontheme.c @@ -1304,6 +1304,14 @@ gtk_icon_theme_error_quark (void) * and renders it into a pixbuf. This is a convenience function; * if more details about the icon are needed, use * gtk_icon_theme_lookup_icon() followed by gtk_icon_info_load_icon(). + * + * Note that you probably want to listen for icon theme changes and + * update the icon. This is usually done by connecting to the + * GtkWidget::style-set signal. If for some reason you do not want to + * update the icon when the icon theme changes, you should consider + * using gdk_pixbuf_copy() to make a private copy of the pixbuf + * returned by this function. Otherwise GTK+ may need to keep the old + * icon theme loaded, which would be a waste of memory. * * Return value: the rendered icon; this may be a newly created icon * or a new reference to an internal icon, so you must not modify |