[PATCH v3] xwayland: Do not set root clip when rootless
Marek Chalupa
mchqwerty at gmail.com
Mon Nov 23 00:46:26 PST 2015
Hi,
the patch works for me
Tested-by: Marek Chalupa <mchqwerty at 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 <ajax at redhat.com> for helping tracking this down!
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93045
> Signed-off-by: Olivier Fourdan <ofourdan at 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,
>
More information about the xorg-devel
mailing list