diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2020-05-06 13:50:45 +0200 |
---|---|---|
committer | Jonas Ã…dahl <jadahl@gmail.com> | 2020-10-23 18:48:18 +0000 |
commit | f00e567417112f25ea0a5580948ce7d585208dd8 (patch) | |
tree | ed33a6cb50d6f1b51a9236feb9a0d4acbba04f44 | |
parent | dd60fa2bc60a1e86788de5ffa0355fb1acbe2823 (diff) | |
download | mutter-f00e567417112f25ea0a5580948ce7d585208dd8.tar.gz |
wayland: Use Clutter event to handle touch cancel
The semantics for libinput events are not as expected here. Besides
it's pointless, as those should arrive per-slot in a burst, and we
cancel on the first event.
We can simply use the Clutter event for this.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1486
-rw-r--r-- | src/wayland/meta-wayland-touch.c | 52 |
1 files changed, 4 insertions, 48 deletions
diff --git a/src/wayland/meta-wayland-touch.c b/src/wayland/meta-wayland-touch.c index 928c0031b..bf11fc590 100644 --- a/src/wayland/meta-wayland-touch.c +++ b/src/wayland/meta-wayland-touch.c @@ -449,6 +449,10 @@ meta_wayland_touch_handle_event (MetaWaylandTouch *touch, handle_touch_end (touch, event); break; + case CLUTTER_TOUCH_CANCEL: + meta_wayland_touch_cancel (touch); + break; + default: return FALSE; } @@ -510,30 +514,6 @@ meta_wayland_touch_cancel (MetaWaylandTouch *touch) g_list_free (surfaces); } -#ifdef HAVE_NATIVE_BACKEND -static gboolean -evdev_filter_func (struct libinput_event *event, - gpointer data) -{ - MetaWaylandTouch *touch = data; - - switch (libinput_event_get_type (event)) - { - case LIBINPUT_EVENT_TOUCH_CANCEL: - /* Clutter translates this into individual CLUTTER_TOUCH_CANCEL events, - * which are not so useful when sending a global signal as the protocol - * requires. - */ - meta_wayland_touch_cancel (touch); - break; - default: - break; - } - - return CLUTTER_EVENT_PROPAGATE; -} -#endif - void meta_wayland_touch_enable (MetaWaylandTouch *touch) { @@ -545,35 +525,11 @@ meta_wayland_touch_enable (MetaWaylandTouch *touch) #endif /* HAVE_NATIVE_BACKEND */ wl_list_init (&touch->resource_list); - -#ifdef HAVE_NATIVE_BACKEND - MetaBackend *backend = meta_get_backend (); - if (META_IS_BACKEND_NATIVE (backend)) - { - ClutterBackend *backend = clutter_get_default_backend (); - ClutterSeat *seat = clutter_backend_get_default_seat (backend); - - meta_seat_native_add_filter (META_SEAT_NATIVE (seat), - evdev_filter_func, touch, NULL); - } -#endif } void meta_wayland_touch_disable (MetaWaylandTouch *touch) { -#ifdef HAVE_NATIVE_BACKEND - MetaBackend *backend = meta_get_backend (); - if (META_IS_BACKEND_NATIVE (backend)) - { - ClutterBackend *backend = clutter_get_default_backend (); - ClutterSeat *seat = clutter_backend_get_default_seat (backend); - - meta_seat_native_remove_filter (META_SEAT_NATIVE (seat), - evdev_filter_func, touch); - } -#endif - meta_wayland_touch_cancel (touch); g_clear_pointer (&touch->touch_surfaces, g_hash_table_unref); |