[PATCH v3] xwayland: Do not set root clip when rootless

Olivier Fourdan ofourdan at redhat.com
Mon Nov 30 06:56:30 PST 2015


Hi

Could someone do a r-b of this patch?

Cheers,
Olivier

----- Original Message -----
> 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,
> >
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel


More information about the xorg-devel mailing list