It will be unlikely in this case to get both REL_WHEEL and REL_HWHEEL
on a single EV_SYN, but for completeness.

Signed-off-by: Carlos Garnacho <carl...@gnome.org>
---
 src/evdev.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/evdev.c b/src/evdev.c
index 901b310..94fe67b 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -335,6 +335,7 @@ evdev_process_relative(struct evdev_device *device,
                       struct input_event *e, uint32_t time)
 {
        struct libinput_device *base = &device->base;
+       int need_frame = 0;
 
        switch (e->code) {
        case REL_X:
@@ -356,6 +357,7 @@ evdev_process_relative(struct evdev_device *device,
                        time,
                        LIBINPUT_POINTER_AXIS_VERTICAL_SCROLL,
                        -1 * e->value * DEFAULT_AXIS_STEP_DISTANCE);
+               need_frame = 1;
                break;
        case REL_HWHEEL:
                evdev_flush_pending_event(device, time);
@@ -369,12 +371,16 @@ evdev_process_relative(struct evdev_device *device,
                                time,
                                LIBINPUT_POINTER_AXIS_HORIZONTAL_SCROLL,
                                e->value * DEFAULT_AXIS_STEP_DISTANCE);
+                       need_frame = 1;
                        break;
                default:
                        break;
 
                }
        }
+
+       if (need_frame)
+               pointer_notify_axis_frame(base, time);
 }
 
 static inline void
-- 
1.9.0

_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to