From cb306a8f174bec9ded95191b91797f59250e6808 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Tue, 31 Jul 2012 16:09:38 +1000 Subject: [PATCH] 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 Signed-off-by: Peter Hutterer Reviewed-by: Chase Douglas --- dix/getevents.c | 2 ++ 1 file changed, 2 insertions(+) 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;