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-10-12 15:51:36 -0400
commit885636b7d42b3c7b151fc386d358184db004ce45 (patch)
treee47813c0859601ea5f8a141d0b66afeb7cc45207
parenta10b4fcdc016d7ac56e5bb35f7f844af41016efe (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>
-rw-r--r--Xext/shm.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/Xext/shm.c b/Xext/shm.c
index 2f9a78808..4168951c4 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);