summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2012-07-31 16:09:38 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2012-08-07 09:39:56 +1000
commitcb306a8f174bec9ded95191b91797f59250e6808 (patch)
tree895399a96e9c374f08c38528738be93f9a7d3c11
parent4a6f42dda00ba3b5616f8a86f0d4c9a652c7d9d4 (diff)
dix: make sure the mask is set for emulated scroll events (#52508)
If a device has smooth scrolling axes, but submits scroll button events, we convert those to motion events and update the valuators. For legacy button events, the valuator mask is likely unset though, causing add_to_scroll_valuator() to return early, leaving us with an empty mask. That again skipped the rest of the code and no events were generated. Fix it by making sure that the scroll valuator in the mask is at least initialized to 0. Broke evdev wheel emulation, introduced by 54476b5e4461ff523e935961affabcf0de12c556. X.Org Bug 52508 <http://bugs.freedesktop.org/show_bug.cgi?id=52508> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
-rw-r--r--dix/getevents.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/dix/getevents.c b/dix/getevents.c
index 27c2e04d1..b3bb162ae 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -1625,6 +1625,8 @@ GetPointerEvents(InternalEvent *events, DeviceIntPtr pDev, int type,
if (adj != 0.0 && axis != -1) {
adj *= pDev->valuator->axes[axis].scroll.increment;
+ if (!valuator_mask_isset(&mask, axis))
+ valuator_mask_set(&mask, axis, 0);
add_to_scroll_valuator(pDev, &mask, axis, adj);
type = MotionNotify;
buttons = 0;