[mutter/wip/carlosg/input-refactors-pt1: 7/32] wayland: Use Clutter event to handle touch cancel




commit 41f12db9b822813cdcf007519e6f07709efa35c7
Author: Carlos Garnacho <carlosg gnome org>
Date:   Wed May 6 13:50:45 2020 +0200

    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 928c0031b2..bf11fc5909 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);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]