From b85f85d6655b302b0dc4d1ad6994b16a79d54bf7 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Fri, 23 Sep 2022 15:52:20 +0200 Subject: [PATCH] wayland: Refactor pointer gesture .end emission event We will want to trigger this from multiple places for cancellation. Part-of: --- .../meta-wayland-pointer-gesture-hold.c | 30 +++++++++++++------ .../meta-wayland-pointer-gesture-pinch.c | 30 +++++++++++++------ .../meta-wayland-pointer-gesture-swipe.c | 30 +++++++++++++------ 3 files changed, 63 insertions(+), 27 deletions(-) diff --git a/src/wayland/meta-wayland-pointer-gesture-hold.c b/src/wayland/meta-wayland-pointer-gesture-hold.c index 904b0654b..4d24f7316 100644 --- a/src/wayland/meta-wayland-pointer-gesture-hold.c +++ b/src/wayland/meta-wayland-pointer-gesture-hold.c @@ -52,29 +52,41 @@ handle_hold_begin (MetaWaylandPointer *pointer, } } +static void +broadcast_end (MetaWaylandPointer *pointer, + uint32_t serial, + uint32_t time, + gboolean cancelled) +{ + MetaWaylandPointerClient *pointer_client; + struct wl_resource *resource; + + pointer_client = pointer->focus_client; + + wl_resource_for_each (resource, &pointer_client->hold_gesture_resources) + { + zwp_pointer_gesture_hold_v1_send_end (resource, serial, + time, cancelled); + } +} + static void handle_hold_end (MetaWaylandPointer *pointer, const ClutterEvent *event) { - MetaWaylandPointerClient *pointer_client; MetaWaylandSeat *seat; - struct wl_resource *resource; gboolean cancelled = FALSE; uint32_t serial; - pointer_client = pointer->focus_client; seat = meta_wayland_pointer_get_seat (pointer); serial = wl_display_next_serial (seat->wl_display); if (event->touchpad_hold.phase == CLUTTER_TOUCHPAD_GESTURE_PHASE_CANCEL) cancelled = TRUE; - wl_resource_for_each (resource, &pointer_client->hold_gesture_resources) - { - zwp_pointer_gesture_hold_v1_send_end (resource, serial, - clutter_event_get_time (event), - cancelled); - } + broadcast_end (pointer, serial, + clutter_event_get_time (event), + cancelled); } gboolean diff --git a/src/wayland/meta-wayland-pointer-gesture-pinch.c b/src/wayland/meta-wayland-pointer-gesture-pinch.c index f7b37ff27..89d1ba634 100644 --- a/src/wayland/meta-wayland-pointer-gesture-pinch.c +++ b/src/wayland/meta-wayland-pointer-gesture-pinch.c @@ -80,29 +80,41 @@ handle_pinch_update (MetaWaylandPointer *pointer, } } +static void +broadcast_end (MetaWaylandPointer *pointer, + uint32_t serial, + uint32_t time, + gboolean cancelled) +{ + MetaWaylandPointerClient *pointer_client; + struct wl_resource *resource; + + pointer_client = pointer->focus_client; + + wl_resource_for_each (resource, &pointer_client->pinch_gesture_resources) + { + zwp_pointer_gesture_pinch_v1_send_end (resource, serial, + time, cancelled); + } +} + static void handle_pinch_end (MetaWaylandPointer *pointer, const ClutterEvent *event) { - MetaWaylandPointerClient *pointer_client; MetaWaylandSeat *seat; - struct wl_resource *resource; gboolean cancelled = FALSE; uint32_t serial; - pointer_client = pointer->focus_client; seat = meta_wayland_pointer_get_seat (pointer); serial = wl_display_next_serial (seat->wl_display); if (event->touchpad_pinch.phase == CLUTTER_TOUCHPAD_GESTURE_PHASE_CANCEL) cancelled = TRUE; - wl_resource_for_each (resource, &pointer_client->pinch_gesture_resources) - { - zwp_pointer_gesture_pinch_v1_send_end (resource, serial, - clutter_event_get_time (event), - cancelled); - } + broadcast_end (pointer, serial, + clutter_event_get_time (event), + cancelled); } gboolean diff --git a/src/wayland/meta-wayland-pointer-gesture-swipe.c b/src/wayland/meta-wayland-pointer-gesture-swipe.c index d95e84941..1e34c4908 100644 --- a/src/wayland/meta-wayland-pointer-gesture-swipe.c +++ b/src/wayland/meta-wayland-pointer-gesture-swipe.c @@ -76,29 +76,41 @@ handle_swipe_update (MetaWaylandPointer *pointer, } } +static void +broadcast_end (MetaWaylandPointer *pointer, + uint32_t serial, + uint32_t time, + gboolean cancelled) +{ + MetaWaylandPointerClient *pointer_client; + struct wl_resource *resource; + + pointer_client = pointer->focus_client; + + wl_resource_for_each (resource, &pointer_client->swipe_gesture_resources) + { + zwp_pointer_gesture_swipe_v1_send_end (resource, serial, + time, cancelled); + } +} + static void handle_swipe_end (MetaWaylandPointer *pointer, const ClutterEvent *event) { - MetaWaylandPointerClient *pointer_client; MetaWaylandSeat *seat; - struct wl_resource *resource; gboolean cancelled = FALSE; uint32_t serial; - pointer_client = pointer->focus_client; seat = meta_wayland_pointer_get_seat (pointer); serial = wl_display_next_serial (seat->wl_display); if (event->touchpad_swipe.phase == CLUTTER_TOUCHPAD_GESTURE_PHASE_CANCEL) cancelled = TRUE; - wl_resource_for_each (resource, &pointer_client->swipe_gesture_resources) - { - zwp_pointer_gesture_swipe_v1_send_end (resource, serial, - clutter_event_get_time (event), - cancelled); - } + broadcast_end (pointer, serial, + clutter_event_get_time (event), + cancelled); } gboolean