Hi, the patch works for me
Tested-by: Marek Chalupa <mchqwe...@gmail.com> Cheers, Marek On 11/23/2015 08:51 AM, Olivier Fourdan wrote:
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 <a...@redhat.com> for helping tracking this down! Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93045 Signed-off-by: Olivier Fourdan <ofour...@redhat.com> --- v2: SetRootClip() only if not rootless in update_screen_size() v3: fix indentation 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(-) 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 5ef444d..2a180f2 100644 --- a/hw/xwayland/xwayland-output.c +++ b/hw/xwayland/xwayland-output.c @@ -164,7 +164,7 @@ 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) + if (!xwl_screen->rootless) SetRootClip(xwl_screen->screen, FALSE); xwl_screen->width = width; @@ -184,11 +184,13 @@ 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); } 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,
_______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel