Otherwise the server may try to draw onto the root window when closing
down, while when rootless the root window which has no storage, thus
causing memory corruption.

Thanks to Adam Jackson <[email protected]> for helping tracking this down!

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93045
Signed-off-by: Olivier Fourdan <[email protected]>
---
 hw/xwayland/xwayland-glamor.c | 4 +++-
 hw/xwayland/xwayland-output.c | 4 ----
 hw/xwayland/xwayland-shm.c    | 4 +++-
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/hw/xwayland/xwayland-glamor.c b/hw/xwayland/xwayland-glamor.c
index ebaf05a..16d1ab9 100644
--- a/hw/xwayland/xwayland-glamor.c
+++ b/hw/xwayland/xwayland-glamor.c
@@ -233,9 +233,11 @@ xwl_glamor_create_screen_resources(ScreenPtr screen)
     if (!ret)
         return ret;
 
-    if (xwl_screen->rootless)
+    if (xwl_screen->rootless) {
         screen->devPrivate =
             fbCreatePixmap(screen, 0, 0, screen->rootDepth, 0);
+            SetRootClip(screen, FALSE);
+    }
     else {
         screen->devPrivate =
             xwl_glamor_create_pixmap(screen, screen->width, screen->height,
diff --git a/hw/xwayland/xwayland-output.c b/hw/xwayland/xwayland-output.c
index f97f100..9101382 100644
--- a/hw/xwayland/xwayland-output.c
+++ b/hw/xwayland/xwayland-output.c
@@ -164,9 +164,6 @@ update_screen_size(struct xwl_output *xwl_output, int 
width, int height)
     struct xwl_screen *xwl_screen = xwl_output->xwl_screen;
     double mmpd;
 
-    if (xwl_screen->screen->root)
-        SetRootClip(xwl_screen->screen, FALSE);
-
     xwl_screen->width = width;
     xwl_screen->height = height;
     xwl_screen->screen->width = width;
@@ -184,7 +181,6 @@ update_screen_size(struct xwl_output *xwl_output, int 
width, int height)
     if (xwl_screen->screen->root) {
         xwl_screen->screen->root->drawable.width = width;
         xwl_screen->screen->root->drawable.height = height;
-        SetRootClip(xwl_screen->screen, TRUE);
         RRScreenSizeNotify(xwl_screen->screen);
     }
 
diff --git a/hw/xwayland/xwayland-shm.c b/hw/xwayland/xwayland-shm.c
index 1022c0d..3c42456 100644
--- a/hw/xwayland/xwayland-shm.c
+++ b/hw/xwayland/xwayland-shm.c
@@ -279,9 +279,11 @@ xwl_shm_create_screen_resources(ScreenPtr screen)
     if (!ret)
         return ret;
 
-    if (xwl_screen->rootless)
+    if (xwl_screen->rootless) {
         screen->devPrivate =
             fbCreatePixmap(screen, 0, 0, screen->rootDepth, 0);
+            SetRootClip(screen, FALSE);
+    }
     else
         screen->devPrivate =
             xwl_shm_create_pixmap(screen, screen->width, screen->height,
-- 
2.5.0

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to