mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-26 13:41:07 +00:00
Bug 557059 – crash when compositing emblems with icon
2008-10-20 Christian Persch <chpe@gnome.org> Bug 557059 – crash when compositing emblems with icon * gtk/gtkicontheme.c: (apply_emblems): Copy the pixbuf before using it with gtk_pixbuf_composite, in case its pixdata is read-only (mmaped from icon cache or builtins). svn path=/trunk/; revision=21690
This commit is contained in:
parent
093d425393
commit
4ba6262be9
@ -1,3 +1,11 @@
|
||||
2008-10-20 Christian Persch <chpe@gnome.org>
|
||||
|
||||
Bug 557059 – crash when compositing emblems with icon
|
||||
|
||||
* gtk/gtkicontheme.c: (apply_emblems): Copy the pixbuf before using it
|
||||
with gtk_pixbuf_composite, in case its pixdata is read-only (mmaped
|
||||
from icon cache or builtins).
|
||||
|
||||
2008-10-20 Murray Cumming <murrayc@murrayc.com>
|
||||
|
||||
* gtk/gtkiconview.c: gtk_icon_view_set_tooltip_row(),
|
||||
|
@ -2776,13 +2776,15 @@ static gboolean icon_info_ensure_scale_and_pixbuf (GtkIconInfo*, gboolean);
|
||||
static void
|
||||
apply_emblems (GtkIconInfo *info)
|
||||
{
|
||||
GdkPixbuf *icon;
|
||||
GdkPixbuf *icon = NULL;
|
||||
gint w, h, pos;
|
||||
GSList *l;
|
||||
|
||||
icon = info->pixbuf;
|
||||
w = gdk_pixbuf_get_width (icon);
|
||||
h = gdk_pixbuf_get_height (icon);
|
||||
if (info->emblem_infos == NULL)
|
||||
return;
|
||||
|
||||
w = gdk_pixbuf_get_width (info->pixbuf);
|
||||
h = gdk_pixbuf_get_height (info->pixbuf);
|
||||
|
||||
for (l = info->emblem_infos, pos = 0; l; l = l->next, pos++)
|
||||
{
|
||||
@ -2826,10 +2828,23 @@ apply_emblems (GtkIconInfo *info)
|
||||
break;
|
||||
}
|
||||
|
||||
if (icon == NULL)
|
||||
{
|
||||
icon = gdk_pixbuf_copy (info->pixbuf);
|
||||
if (icon == NULL)
|
||||
break;
|
||||
}
|
||||
|
||||
gdk_pixbuf_composite (emblem, icon, x, y, ew, eh, x, y,
|
||||
scale, scale, GDK_INTERP_BILINEAR, 255);
|
||||
}
|
||||
}
|
||||
|
||||
if (icon)
|
||||
{
|
||||
g_object_unref (info->pixbuf);
|
||||
info->pixbuf = icon;
|
||||
}
|
||||
}
|
||||
|
||||
/* This function contains the complicated logic for deciding
|
||||
|
Loading…
Reference in New Issue
Block a user