From f00e567417112f25ea0a5580948ce7d585208dd8 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Wed, 6 May 2020 13:50:45 +0200 Subject: 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 --- src/wayland/meta-wayland-touch.c | 52 ++++------------------------------------ 1 file 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); -- cgit v1.2.1