diff options
author | Adam Jackson <ajax@redhat.com> | 2013-11-07 13:59:30 -0500 |
---|---|---|
committer | Adam Jackson <ajax@redhat.com> | 2013-12-09 13:20:36 -0500 |
commit | 1dd839a425adc6e5a1dc377003ed86a374d81f0b (patch) | |
tree | 28707bd90d730417aee5f06eebf364ce702cff67 /composite | |
parent | 8dbe456abae1a32fb6c5c74fa456bc7301cccabe (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>
Diffstat (limited to 'composite')
-rw-r--r-- | composite/compoverlay.c | 5 |
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); |