summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Jackson <ajax@redhat.com>2013-11-07 13:59:30 -0500
committerAdam Jackson <ajax@redhat.com>2013-12-09 13:20:36 -0500
commit1dd839a425adc6e5a1dc377003ed86a374d81f0b (patch)
tree28707bd90d730417aee5f06eebf364ce702cff67
parent8dbe456abae1a32fb6c5c74fa456bc7301cccabe (diff)
composite: Fix COW creation for Xinerama (v2)
Say you have two 800x600 screens left/right of each other. A window that's 200x200 at +700+0 in protocol coordinate space will appear to be at -100+0 in the coordinate space of the right hand screen. Put another way: windows are in the coordinate space of their root window pixmap. We weren't doing this translation for the COW, so when rendering came in to it you'd see the top-left chunk of the COW on all screens. Cool effect and all, but wrong. v2: Only translate when Xinerama is active [keithp] Reviewed-by: Keith Packard <keithp@keithp.com> Signed-off-by: Adam Jackson <ajax@redhat.com>
-rw-r--r--composite/compoverlay.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/composite/compoverlay.c b/composite/compoverlay.c
index d3cfaf06f..bf5434ccb 100644
--- a/composite/compoverlay.c
+++ b/composite/compoverlay.c
@@ -133,16 +133,19 @@ compCreateOverlayWindow(ScreenPtr pScreen)
int result;
int w = pScreen->width;
int h = pScreen->height;
+ int x = 0, y = 0;
#ifdef PANORAMIX
if (!noPanoramiXExtension) {
+ x = -pScreen->x;
+ y = -pScreen->y;
w = PanoramiXPixWidth;
h = PanoramiXPixHeight;
}
#endif
pWin = cs->pOverlayWin =
- CreateWindow(cs->overlayWid, pRoot, 0, 0, w, h, 0,
+ CreateWindow(cs->overlayWid, pRoot, x, y, w, h, 0,
InputOutput, CWBackPixmap | CWOverrideRedirect, &attrs[0],
pRoot->drawable.depth,
serverClient, pScreen->rootVisual, &result);