This event marks the end of 1..N simultaneous axis changes. Will be
useful to have users compress vscroll/hscroll processing in a single
point, and will prove even more useful on devices with a higher number
of axes, like tablets.

Signed-off-by: Carlos Garnacho <carl...@gnome.org>
---
 src/libinput-private.h |  4 ++++
 src/libinput.c         | 23 +++++++++++++++++++++++
 src/libinput.h         |  5 +++++
 3 files changed, 32 insertions(+)

diff --git a/src/libinput-private.h b/src/libinput-private.h
index 21627b0..4eac89d 100644
--- a/src/libinput-private.h
+++ b/src/libinput-private.h
@@ -155,6 +155,10 @@ pointer_notify_axis(struct libinput_device *device,
                    li_fixed_t value);
 
 void
+pointer_notify_axis_frame(struct libinput_device *device,
+                         uint32_t time);
+
+void
 touch_notify_touch_down(struct libinput_device *device,
                        uint32_t time,
                        int32_t slot,
diff --git a/src/libinput.c b/src/libinput.c
index 1e31be3..4ecd068 100644
--- a/src/libinput.c
+++ b/src/libinput.c
@@ -175,6 +175,7 @@ libinput_event_get_pointer_event(struct libinput_event 
*event)
        case LIBINPUT_EVENT_POINTER_MOTION_ABSOLUTE:
        case LIBINPUT_EVENT_POINTER_BUTTON:
        case LIBINPUT_EVENT_POINTER_AXIS:
+       case LIBINPUT_EVENT_POINTER_AXIS_FRAME:
                return (struct libinput_event_pointer *) event;
        case LIBINPUT_EVENT_TOUCH_DOWN:
        case LIBINPUT_EVENT_TOUCH_UP:
@@ -202,6 +203,7 @@ libinput_event_get_keyboard_event(struct libinput_event 
*event)
        case LIBINPUT_EVENT_POINTER_MOTION_ABSOLUTE:
        case LIBINPUT_EVENT_POINTER_BUTTON:
        case LIBINPUT_EVENT_POINTER_AXIS:
+       case LIBINPUT_EVENT_POINTER_AXIS_FRAME:
        case LIBINPUT_EVENT_TOUCH_DOWN:
        case LIBINPUT_EVENT_TOUCH_UP:
        case LIBINPUT_EVENT_TOUCH_MOTION:
@@ -226,6 +228,7 @@ libinput_event_get_touch_event(struct libinput_event *event)
        case LIBINPUT_EVENT_POINTER_MOTION_ABSOLUTE:
        case LIBINPUT_EVENT_POINTER_BUTTON:
        case LIBINPUT_EVENT_POINTER_AXIS:
+       case LIBINPUT_EVENT_POINTER_AXIS_FRAME:
                break;
        case LIBINPUT_EVENT_TOUCH_DOWN:
        case LIBINPUT_EVENT_TOUCH_UP:
@@ -252,6 +255,7 @@ libinput_event_get_device_notify_event(struct 
libinput_event *event)
        case LIBINPUT_EVENT_POINTER_MOTION_ABSOLUTE:
        case LIBINPUT_EVENT_POINTER_BUTTON:
        case LIBINPUT_EVENT_POINTER_AXIS:
+       case LIBINPUT_EVENT_POINTER_AXIS_FRAME:
        case LIBINPUT_EVENT_TOUCH_DOWN:
        case LIBINPUT_EVENT_TOUCH_UP:
        case LIBINPUT_EVENT_TOUCH_MOTION:
@@ -844,6 +848,25 @@ pointer_notify_axis(struct libinput_device *device,
 }
 
 void
+pointer_notify_axis_frame(struct libinput_device *device,
+                         uint32_t time)
+{
+       struct libinput_event_pointer *axis_frame_event;
+
+       axis_frame_event = zalloc(sizeof *axis_frame_event);
+       if (!axis_frame_event)
+               return;
+
+       *axis_frame_event = (struct libinput_event_pointer) {
+               .time = time,
+       };
+
+       post_device_event(device,
+                         LIBINPUT_EVENT_POINTER_AXIS_FRAME,
+                         &axis_frame_event->base);
+}
+
+void
 touch_notify_touch_down(struct libinput_device *device,
                        uint32_t time,
                        int32_t slot,
diff --git a/src/libinput.h b/src/libinput.h
index 810a66c..5b3d79e 100644
--- a/src/libinput.h
+++ b/src/libinput.h
@@ -146,6 +146,11 @@ enum libinput_event_type {
        LIBINPUT_EVENT_POINTER_MOTION_ABSOLUTE,
        LIBINPUT_EVENT_POINTER_BUTTON,
        LIBINPUT_EVENT_POINTER_AXIS,
+       /**
+        * Signals the end of a set of axis changes on the pointer. This
+        * event has no coordinate information attached.
+        */
+       LIBINPUT_EVENT_POINTER_AXIS_FRAME,
 
        LIBINPUT_EVENT_TOUCH_DOWN = 500,
        LIBINPUT_EVENT_TOUCH_UP,
-- 
1.9.0

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

Reply via email to