[PATCH] dix: set raw event values before adding up relative values (#46976)
Peter Hutterer
peter.hutterer at who-t.net
Tue Mar 20 21:09:18 PDT 2012
Regression introduced in 4e52cc0ef48145134cd58d357fb7289e6f8bb709
Raw event values are values as-is from the driver, modified only be
transformation or acceleration. 4e52cc caused the mask to be updated from
driver-submitted relative to device-absolute coordinates, and that mask was
then written into the raw events.
Move the raw event update into the respective branches for absolute/relative
events.
X.Org Bug 46976 <http://bugs.freedesktop.org/show_bug.cgi?id=46976>
Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
dix/getevents.c | 9 +++++----
1 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/dix/getevents.c b/dix/getevents.c
index 5b9cef3..fd5998d 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -1311,17 +1311,18 @@ fill_pointer_events(InternalEvent *events, DeviceIntPtr pDev, int type,
transformAbsolute(pDev, &mask);
clipAbsolute(pDev, &mask);
+ if ((flags & POINTER_NORAW) == 0)
+ set_raw_valuators(raw, &mask, raw->valuators.data);
} else {
if (flags & POINTER_ACCELERATE)
accelPointer(pDev, &mask, ms);
+ if ((flags & POINTER_NORAW) == 0)
+ set_raw_valuators(raw, &mask, raw->valuators.data);
+
moveRelative(pDev, &mask);
}
/* valuators are in device coordinate system in absolute coordinates */
-
- if ((flags & POINTER_NORAW) == 0)
- set_raw_valuators(raw, &mask, raw->valuators.data);
-
scale_to_desktop(pDev, &mask, &devx, &devy, &screenx, &screeny);
scr = positionSprite(pDev, (flags & POINTER_ABSOLUTE) ? Absolute : Relative,
&mask, &devx, &devy, &screenx, &screeny);
--
1.7.7.6
More information about the xorg-devel
mailing list