From: Dave Airlie <[email protected]>

The xinerama version of this wasn't translating the coordinates correctly.

Running xcompmgr against a xinerama Xephyr setup, would never draw anything
on the second screen, and damage was occuring wrongly against the second screen.

anyone care to wonder if SetWindowShapeRegion needs work?

Signed-off-by: Dave Airlie <[email protected]>
---
 xfixes/region.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/xfixes/region.c b/xfixes/region.c
index 81ead4d..e5d3664 100644
--- a/xfixes/region.c
+++ b/xfixes/region.c
@@ -900,7 +900,7 @@ PanoramiXFixesSetPictureClipRegion (ClientPtr client)
     REQUEST(xXFixesSetPictureClipRegionReq);
     int                    result = Success, j;
     PanoramiXRes    *pict;
-
+    INT16 orig_x, orig_y;
     REQUEST_SIZE_MATCH (xXFixesSetPictureClipRegionReq);
 
     if ((result = dixLookupResourceByType((void **)&pict, stuff->picture,
@@ -909,9 +909,16 @@ PanoramiXFixesSetPictureClipRegion (ClientPtr client)
        client->errorValue = stuff->picture;
        return result;
     }
+    orig_x = stuff->xOrigin;
+    orig_y = stuff->yOrigin;
 
     FOR_NSCREENS_BACKWARD(j) {
         stuff->picture = pict->info[j].id;
+        if (pict->u.pict.root)
+        {
+            stuff->xOrigin = orig_x - screenInfo.screens[j]->x;
+            stuff->yOrigin = orig_y - screenInfo.screens[j]->y;
+        }
        result = (*PanoramiXSaveXFixesVector[X_XFixesSetPictureClipRegion]) 
(client);
         if(result != Success) break;
     }
-- 
1.7.1

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to