From 4e99673620b78eb6f3c1720397bbcfe54a3361a7 Mon Sep 17 00:00:00 2001 From: Richard Hult Date: Mon, 3 Dec 2007 19:37:17 +0000 Subject: [PATCH] Merged from trunk: 2007-12-03 Richard Hult Merged from trunk: * gdk/quartz/gdkwindow-quartz.c: (gdk_window_impl_quartz_begin_paint_region): Don't crash when a parent relative bg pixmap is set, and no parent has a bg pixmap. Fixes bug #500804. svn path=/branches/gtk-2-12/; revision=19101 --- ChangeLog | 9 +++++++++ gdk/quartz/gdkwindow-quartz.c | 12 +++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 75ec0160cf..1263edec77 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2007-12-03 Richard Hult + + Merged from trunk: + + * gdk/quartz/gdkwindow-quartz.c: + (gdk_window_impl_quartz_begin_paint_region): Don't crash when a + parent relative bg pixmap is set, and no parent has a bg + pixmap. Fixes bug #500804. + 2007-12-1 Cody Russell Merged from trunk: diff --git a/gdk/quartz/gdkwindow-quartz.c b/gdk/quartz/gdkwindow-quartz.c index e3e97a9d7c..d128f2c32f 100644 --- a/gdk/quartz/gdkwindow-quartz.c +++ b/gdk/quartz/gdkwindow-quartz.c @@ -209,7 +209,7 @@ gdk_window_impl_quartz_begin_paint_region (GdkPaintable *paintable, x_offset = y_offset = 0; window = GDK_WINDOW (drawable_impl->wrapper); - while (window && ((GdkWindowObject *) window)->bg_pixmap == GDK_PARENT_RELATIVE_BG) + while (window && bg_pixmap == GDK_PARENT_RELATIVE_BG) { /* If this window should have the same background as the parent, * fetch the parent. (And if the same goes for the parent, fetch @@ -218,6 +218,16 @@ gdk_window_impl_quartz_begin_paint_region (GdkPaintable *paintable, x_offset += ((GdkWindowObject *) window)->x; y_offset += ((GdkWindowObject *) window)->y; window = GDK_WINDOW (((GdkWindowObject *) window)->parent); + bg_pixmap = ((GdkWindowObject *) window)->bg_pixmap; + } + + if (bg_pixmap == NULL || bg_pixmap == GDK_NO_BG || bg_pixmap == GDK_PARENT_RELATIVE_BG) + { + /* Parent relative background but the parent doesn't have a + * pixmap. + */ + g_free (rects); + return; } /* Note: There should be a CG API to draw tiled images, we might