diff options
author | emersion <contact@emersion.fr> | 2019-01-26 11:04:05 +0100 |
---|---|---|
committer | emersion <contact@emersion.fr> | 2019-01-26 11:04:05 +0100 |
commit | 5de26ad8ed962bc7cc753a623f247f7dc4c76a39 (patch) | |
tree | be7c5198f68e28f071ab93bd7aea6610db9c1c5e /backend/libinput | |
parent | 209210d30780ec64995594b77fde3d718b655542 (diff) |
pointer: add a frame event
Frame events group logically connected pointer events. It makes sense to make
the backend responsible for sending frame events, since once the events are
split (ie. once the frame events are stripped) it's not easy to figure out
which events belongs to which frame again.
This is also how Weston handles frame events.
Fixes https://github.com/swaywm/wlroots/issues/1468
Diffstat (limited to 'backend/libinput')
-rw-r--r-- | backend/libinput/pointer.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/backend/libinput/pointer.c b/backend/libinput/pointer.c index b9cf1dfe..0df16a10 100644 --- a/backend/libinput/pointer.c +++ b/backend/libinput/pointer.c @@ -39,6 +39,7 @@ void handle_pointer_motion(struct libinput_event *event, wlr_event.unaccel_dx = libinput_event_pointer_get_dx_unaccelerated(pevent); wlr_event.unaccel_dy = libinput_event_pointer_get_dy_unaccelerated(pevent); wlr_signal_emit_safe(&wlr_dev->pointer->events.motion, &wlr_event); + wlr_signal_emit_safe(&wlr_dev->pointer->events.frame, wlr_dev->pointer); } void handle_pointer_motion_abs(struct libinput_event *event, @@ -58,6 +59,7 @@ void handle_pointer_motion_abs(struct libinput_event *event, wlr_event.x = libinput_event_pointer_get_absolute_x_transformed(pevent, 1); wlr_event.y = libinput_event_pointer_get_absolute_y_transformed(pevent, 1); wlr_signal_emit_safe(&wlr_dev->pointer->events.motion_absolute, &wlr_event); + wlr_signal_emit_safe(&wlr_dev->pointer->events.frame, wlr_dev->pointer); } void handle_pointer_button(struct libinput_event *event, @@ -84,6 +86,7 @@ void handle_pointer_button(struct libinput_event *event, break; } wlr_signal_emit_safe(&wlr_dev->pointer->events.button, &wlr_event); + wlr_signal_emit_safe(&wlr_dev->pointer->events.frame, wlr_dev->pointer); } void handle_pointer_axis(struct libinput_event *event, @@ -114,13 +117,13 @@ void handle_pointer_axis(struct libinput_event *event, wlr_event.source = WLR_AXIS_SOURCE_WHEEL_TILT; break; } - enum libinput_pointer_axis axies[] = { + const enum libinput_pointer_axis axes[] = { LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL, LIBINPUT_POINTER_AXIS_SCROLL_HORIZONTAL, }; - for (size_t i = 0; i < sizeof(axies) / sizeof(axies[0]); ++i) { - if (libinput_event_pointer_has_axis(pevent, axies[i])) { - switch (axies[i]) { + for (size_t i = 0; i < sizeof(axes) / sizeof(axes[0]); ++i) { + if (libinput_event_pointer_has_axis(pevent, axes[i])) { + switch (axes[i]) { case LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL: wlr_event.orientation = WLR_AXIS_ORIENTATION_VERTICAL; break; @@ -129,10 +132,11 @@ void handle_pointer_axis(struct libinput_event *event, break; } wlr_event.delta = - libinput_event_pointer_get_axis_value(pevent, axies[i]); + libinput_event_pointer_get_axis_value(pevent, axes[i]); wlr_event.delta_discrete = - libinput_event_pointer_get_axis_value_discrete(pevent, axies[i]); + libinput_event_pointer_get_axis_value_discrete(pevent, axes[i]); wlr_signal_emit_safe(&wlr_dev->pointer->events.axis, &wlr_event); } } + wlr_signal_emit_safe(&wlr_dev->pointer->events.frame, wlr_dev->pointer); } |