[PATCH] dix: when rescaling from master, rescale from desktop dimensions (#46657)
Peter Hutterer
peter.hutterer at who-t.net
Sun Feb 26 16:18:15 PST 2012
master->last.valuators[] is in desktop dimensions, so use those as
rescale axis ranges, not the screen. Otherwise, a rescale on any screen
not the top-left will cause out-of-bounds coordinates which will always
map to the bottom-right screen, causing the device to be stuck on that
screen.
X.Org Bug 46657 <http://bugs.freedesktop.org/show_bug.cgi?id=46657>
Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
dix/getevents.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/dix/getevents.c b/dix/getevents.c
index 306d0ff..11c509c 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -341,14 +341,16 @@ updateSlaveDeviceCoords(DeviceIntPtr master, DeviceIntPtr pDev)
pDev->last.valuators[0] = rescaleValuatorAxis(pDev->last.valuators[0],
NULL,
pDev->valuator->axes + 0,
- 0, scr->width);
+ screenInfo.x,
+ screenInfo.width);
}
if(pDev->valuator->numAxes > 1)
{
pDev->last.valuators[1] = rescaleValuatorAxis(pDev->last.valuators[1],
NULL,
pDev->valuator->axes + 1,
- 0, scr->height);
+ screenInfo.y,
+ screenInfo.height);
}
/* calculate the other axis as well based on info from the old
--
1.7.7.6
More information about the xorg-devel
mailing list