xserver: Branch 'master'
Adam Jackson
ajax at kemper.freedesktop.org
Mon Nov 30 09:08:32 PST 2015
hw/xwayland/xwayland-glamor.c | 4 +++-
hw/xwayland/xwayland-output.c | 6 ++++--
hw/xwayland/xwayland-shm.c | 4 +++-
3 files changed, 10 insertions(+), 4 deletions(-)
New commits:
commit 51a4399b94f9adfac5f7718d4cbf73f793dcca56
Author: Olivier Fourdan <ofourdan at redhat.com>
Date: Mon Nov 23 08:51:48 2015 +0100
xwayland: Do not set root clip when rootless
Otherwise the server may try to draw onto the root window when closing
down, but when running rootless the root window has no storage thus
causing a memory corruption.
Thanks to Adam Jackson <ajax at redhat.com> for helping tracking this down!
Reviewed-by: Adam Jackson <ajax at redhat.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93045
Signed-off-by: Olivier Fourdan <ofourdan at redhat.com>
Tested-by: Marek Chalupa <mchqwerty at gmail.com>
diff --git a/hw/xwayland/xwayland-glamor.c b/hw/xwayland/xwayland-glamor.c
index ebaf05a..c357217 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 260c9dc..8b2f8cb 100644
--- a/hw/xwayland/xwayland-output.c
+++ b/hw/xwayland/xwayland-output.c
@@ -186,7 +186,7 @@ output_handle_done(void *data, struct wl_output *wl_output)
--xwl_screen->expecting_event;
}
- if (xwl_screen->screen->root)
+ if (!xwl_screen->rootless)
SetRootClip(xwl_screen->screen, FALSE);
xwl_screen->width = width;
@@ -206,11 +206,13 @@ output_handle_done(void *data, struct wl_output *wl_output)
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);
}
update_desktop_dimensions();
+
+ if (!xwl_screen->rootless)
+ SetRootClip(xwl_screen->screen, TRUE);
}
static void
diff --git a/hw/xwayland/xwayland-shm.c b/hw/xwayland/xwayland-shm.c
index 1022c0d..7072be4 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,
More information about the xorg-commit
mailing list