summaryrefslogtreecommitdiff
path: root/dix/getevents.c
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2012-03-21 14:05:29 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2012-03-22 11:33:21 +1000
commit908ab3d580188533168c8cdfd2cab9dc689b4218 (patch)
treeaf6bacd1d96593e176fec8c77254352762415c57 /dix/getevents.c
parent9c3bd3ae652af386b6821b197d24528f20ba867d (diff)
dix: set raw event values before adding up relative values (#46976)
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 relative to absolute coordinates which then got 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@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com> Reviewed-by: Daniel Stone <daniel@fooishbar.org> Tested-by: Sven Arvidsson <sa@whiz.se> Reviewed-by: Simon Thum <simon.thum@gmx.de>
Diffstat (limited to 'dix/getevents.c')
-rw-r--r--dix/getevents.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/dix/getevents.c b/dix/getevents.c
index 260955b0b..fa85fe7cf 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -1314,18 +1314,19 @@ 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);