[PATCH] XShmGetImage: fix censoring

Nikolay Martynov mar.kolya at gmail.com
Thu Sep 21 14:06:36 UTC 2017


Hi.

Just a kind ping. Is any additional information needed in this patch?

Thanks!

2017-09-13 23:23 GMT-04:00 Nikolay Martynov <mar.kolya at gmail.com>:
> It looks like offsets calculated during image censoring are wrong.
> This results in black (empty) images returns.
>
> This fix is very similar to 6c6f09aac7f1d1367a042087b7681c7fdf1d1e0f
> that was applied to XGetImage
>
> Visually this fixes chromium/firefox window sharing in multiscreen
> configurations - without this patch most of the windows on 'secodnary'
> screens are black.
>
> This also should fix https://bugs.freedesktop.org/show_bug.cgi?id=101730.
>
> Signed-off-by: Nikolay Martynov <mar.kolya at gmail.com>
> ---
>  Xext/shm.c | 8 ++------
>  1 file changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/Xext/shm.c b/Xext/shm.c
> index 91ea90b14..56555c7aa 100644
> --- a/Xext/shm.c
> +++ b/Xext/shm.c
> @@ -650,9 +650,8 @@ ProcShmGetImage(ClientPtr client)
>                 wBorderWidth((WindowPtr) pDraw) + (int) pDraw->height)
>              return BadMatch;
>          visual = wVisual(((WindowPtr) pDraw));
> -        pVisibleRegion = NotClippedByChildren((WindowPtr) pDraw);
> -        if (pVisibleRegion)
> -            RegionTranslate(pVisibleRegion, -pDraw->x, -pDraw->y);
> +        if (pDraw->type == DRAWABLE_WINDOW)
> +            pVisibleRegion = &((WindowPtr) pDraw)->borderClip;
>      }
>      else {
>          if (stuff->x < 0 ||
> @@ -715,9 +714,6 @@ ProcShmGetImage(ClientPtr client)
>          }
>      }
>
> -    if (pVisibleRegion)
> -        RegionDestroy(pVisibleRegion);
> -
>      if (client->swapped) {
>          swaps(&xgi.sequenceNumber);
>          swapl(&xgi.length);
> --
> 2.11.0
>



-- 
Martynov Nikolay.
Email: mar.kolya at gmail.com


More information about the xorg-devel mailing list