summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compositor/compositor-xrender.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/compositor/compositor-xrender.c b/src/compositor/compositor-xrender.c
index 35454082..fa8711bc 100644
--- a/src/compositor/compositor-xrender.c
+++ b/src/compositor/compositor-xrender.c
@@ -846,6 +846,35 @@ root_tile (MetaScreen *screen)
if (!pixmap)
{
+ int width;
+ int height;
+
+ meta_screen_get_size (screen, &width, &height);
+
+ pixmap = XCreatePixmap (xdisplay, xroot, width, height,
+ DefaultDepth (xdisplay, screen_number));
+
+ if (pixmap)
+ {
+ XGCValues gcv;
+ GC gc;
+
+ gcv.graphics_exposures = False;
+ gcv.subwindow_mode = IncludeInferiors;
+
+ gc = XCreateGC (xdisplay, xroot,
+ GCGraphicsExposures | GCSubwindowMode,
+ &gcv);
+
+ XCopyArea (xdisplay, xroot, pixmap, gc, 0, 0, width, height, 0, 0);
+ XSync (xdisplay, False);
+
+ XFreeGC (xdisplay, gc);
+ }
+ }
+
+ if (!pixmap)
+ {
pixmap = XCreatePixmap (xdisplay, xroot, 1, 1,
DefaultDepth (xdisplay, screen_number));
g_return_val_if_fail (pixmap != None, None);