summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2020-05-06 13:50:45 +0200
committerJonas Ã…dahl <jadahl@gmail.com>2020-10-23 18:48:18 +0000
commitf00e567417112f25ea0a5580948ce7d585208dd8 (patch)
treeed33a6cb50d6f1b51a9236feb9a0d4acbba04f44
parentdd60fa2bc60a1e86788de5ffa0355fb1acbe2823 (diff)
downloadmutter-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.c52
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);