forked from AuroraMiddleware/gtk
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)
This commit is contained in:
parent
e337f0cf19
commit
97ec1cdf4f
@ -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)
|
||||
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user