From 85b13ebd18d89fdc9aa7439ae94396f4699c1ebe Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Wed, 2 Aug 2023 20:30:30 +0200 Subject: [PATCH] core: Pass ClutterStage explicitly to MetaGestureTracker Pass a ClutterStage argument explicitly, instead of fetching it from the event. Part-of: --- src/core/events.c | 25 ++++++++++++++++--------- src/core/meta-gesture-tracker-private.h | 1 + src/core/meta-gesture-tracker.c | 5 ++--- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/core/events.c b/src/core/events.c index 0f3d64748..c5d7cecd9 100644 --- a/src/core/events.c +++ b/src/core/events.c @@ -63,24 +63,29 @@ typedef enum EVENTS_UNFREEZE_REPLAY, } EventsUnfreezeMethod; -static gboolean -stage_has_key_focus (MetaDisplay *display) +static ClutterStage * +stage_from_display (MetaDisplay *display) { MetaContext *context = meta_display_get_context (display); MetaBackend *backend = meta_context_get_backend (context); - ClutterActor *stage = meta_backend_get_stage (backend); - return clutter_stage_get_key_focus (CLUTTER_STAGE (stage)) == stage; + return CLUTTER_STAGE (meta_backend_get_stage (backend)); +} + +static gboolean +stage_has_key_focus (MetaDisplay *display) +{ + ClutterStage *stage = stage_from_display (display); + + return clutter_stage_get_key_focus (stage) == CLUTTER_ACTOR (stage); } static gboolean stage_has_grab (MetaDisplay *display) { - MetaContext *context = meta_display_get_context (display); - MetaBackend *backend = meta_context_get_backend (context); - ClutterActor *stage = meta_backend_get_stage (backend); + ClutterStage *stage = stage_from_display (display); - return clutter_stage_get_grab_actor (CLUTTER_STAGE (stage)) != NULL; + return clutter_stage_get_grab_actor (stage) != NULL; } static MetaWindow * @@ -393,7 +398,9 @@ meta_display_handle_event (MetaDisplay *display, gesture_tracker = meta_display_get_gesture_tracker (display); - if (meta_gesture_tracker_handle_event (gesture_tracker, event)) + if (meta_gesture_tracker_handle_event (gesture_tracker, + stage_from_display (display), + event)) { bypass_wayland = TRUE; bypass_clutter = FALSE; diff --git a/src/core/meta-gesture-tracker-private.h b/src/core/meta-gesture-tracker-private.h index 3a2e3310e..a987bbee8 100644 --- a/src/core/meta-gesture-tracker-private.h +++ b/src/core/meta-gesture-tracker-private.h @@ -58,6 +58,7 @@ GType meta_gesture_tracker_get_type (void) G_GNUC_CONST MetaGestureTracker * meta_gesture_tracker_new (void); gboolean meta_gesture_tracker_handle_event (MetaGestureTracker *tracker, + ClutterStage *stage, const ClutterEvent *event); gboolean meta_gesture_tracker_set_sequence_state (MetaGestureTracker *tracker, ClutterEventSequence *sequence, diff --git a/src/core/meta-gesture-tracker.c b/src/core/meta-gesture-tracker.c index 3365e8fe4..dd973d59b 100644 --- a/src/core/meta-gesture-tracker.c +++ b/src/core/meta-gesture-tracker.c @@ -421,13 +421,13 @@ meta_gesture_tracker_untrack_stage (MetaGestureTracker *tracker) gboolean meta_gesture_tracker_handle_event (MetaGestureTracker *tracker, + ClutterStage *stage, const ClutterEvent *event) { MetaGestureTrackerPrivate *priv; ClutterEventSequence *sequence; MetaSequenceState state; MetaSequenceInfo *info; - ClutterActor *stage; gfloat x, y; sequence = clutter_event_get_event_sequence (event); @@ -436,13 +436,12 @@ meta_gesture_tracker_handle_event (MetaGestureTracker *tracker, return FALSE; priv = meta_gesture_tracker_get_instance_private (tracker); - stage = CLUTTER_ACTOR (clutter_event_get_stage (event)); switch (event->type) { case CLUTTER_TOUCH_BEGIN: if (g_hash_table_size (priv->sequences) == 0) - meta_gesture_tracker_track_stage (tracker, stage); + meta_gesture_tracker_track_stage (tracker, CLUTTER_ACTOR (stage)); info = meta_sequence_info_new (tracker, event); g_hash_table_insert (priv->sequences, sequence, info);