diff options
Diffstat (limited to 'backend')
-rw-r--r-- | backend/libinput/events.c | 2 | ||||
-rw-r--r-- | backend/libinput/touch.c | 11 |
2 files changed, 12 insertions, 1 deletions
diff --git a/backend/libinput/events.c b/backend/libinput/events.c index e5778bc9..1fc8cc09 100644 --- a/backend/libinput/events.c +++ b/backend/libinput/events.c @@ -271,7 +271,7 @@ void handle_libinput_event(struct wlr_libinput_backend *backend, handle_touch_cancel(event, libinput_dev); break; case LIBINPUT_EVENT_TOUCH_FRAME: - // no-op (at least for now) + handle_touch_frame(event, libinput_dev); break; case LIBINPUT_EVENT_TABLET_TOOL_AXIS: handle_tablet_tool_axis(event, libinput_dev); diff --git a/backend/libinput/touch.c b/backend/libinput/touch.c index f69bba75..ee987a91 100644 --- a/backend/libinput/touch.c +++ b/backend/libinput/touch.c @@ -95,3 +95,14 @@ void handle_touch_cancel(struct libinput_event *event, wlr_event.touch_id = libinput_event_touch_get_seat_slot(tevent); wlr_signal_emit_safe(&wlr_dev->touch->events.cancel, &wlr_event); } + +void handle_touch_frame(struct libinput_event *event, + struct libinput_device *libinput_dev) { + struct wlr_input_device *wlr_dev = + get_appropriate_device(WLR_INPUT_DEVICE_TOUCH, libinput_dev); + if (!wlr_dev) { + wlr_log(WLR_DEBUG, "Got a touch event for a device with no touch?"); + return; + } + wlr_signal_emit_safe(&wlr_dev->touch->events.frame, NULL); +} |