summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2009-12-08 10:09:04 -0500
committerMatthias Clasen <mclasen@redhat.com>2009-12-08 10:13:06 -0500
commitf0111dba7369996b5d51110ab372ced8f6a6d48f (patch)
tree8b5e45fba0dc78bb8943d7961469dc64b52194d9
parent141716164a16f05cac898962e5cfa96fb24b2ed2 (diff)
downloadgdk-pixbuf-f0111dba7369996b5d51110ab372ced8f6a6d48f.tar.gz
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 ab7b8eb4e..d297e629c 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;