summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--ChangeLog.pre-2-109
-rw-r--r--ChangeLog.pre-2-89
-rw-r--r--gtk/gtkiconcache.c18
-rw-r--r--gtk/gtkicontheme.c8
5 files changed, 52 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index cefda3d868..841ba490e0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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