summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikolay Martynov <mar.kolya@gmail.com>2017-09-13 23:23:13 -0400
committerAdam Jackson <ajax@redhat.com>2017-12-13 10:04:11 -0500
commitcd5076a50c0274512bd2ce2c8ecf56c3517d0266 (patch)
treebcd8d61c6f3e59e0a78924e640c79c18b99d03d9
parenta6776111b24f7211c08c7497466f5d9351d0756c (diff)
XShmGetImage: fix censoring
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@gmail.com> Reviewed-by: Adam Jackson <ajax@redhat.com> (cherry picked from commit 885636b7d42b3c7b151fc386d358184db004ce45)
-rw-r--r--Xext/shm.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/Xext/shm.c b/Xext/shm.c
index c98d4a0c3..fe42a66d2 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);