summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2009-12-08 15:09:04 (GMT)
committerMatthias Clasen <mclasen@redhat.com>2009-12-08 15:09:04 (GMT)
commit0748cf563d0d0d03001a62589f13be16a8ec06c1 (patch)
tree40b13ec35df38c343a4015d0416109865ebce9d5
parent105b00754560b7541a82e225023af743e8e1a34e (diff)
downloadgtk+-0748cf563d0d0d03001a62589f13be16a8ec06c1.zip
gtk+-0748cf563d0d0d03001a62589f13be16a8ec06c1.tar.xz
Never do implicit paints for foreign windows
They don't need double buffer combination since they have no client-side children, and creating pixmaps for them is risky since they could disappear at any time. May fix bug 598476 and 603652.
-rw-r--r--gdk/gdkwindow.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index 0404851..78b19e8 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -2611,6 +2611,14 @@ gdk_window_begin_implicit_paint (GdkWindow *window, GdkRectangle *rect)
private->implicit_paint != NULL)
return FALSE; /* Don't stack implicit paints */
+ /* Never do implicit paints for foreign windows, they don't need
+ * double buffer combination since they have no client side children,
+ * and creating pixmaps for them is risky since they could disappear
+ * at any time
+ */
+ if (private->window_type == GDK_WINDOW_FOREIGN)
+ return FALSE;
+
paint = g_new (GdkWindowPaint, 1);
paint->region = gdk_region_new (); /* Empty */
paint->x_offset = rect->x;