From 3f3c8876e0494cf7af92ce9b216da70fd4c0c275 Mon Sep 17 00:00:00 2001 From: Xiaoguang Wang Date: Tue, 23 Apr 2024 12:28:45 +0800 Subject: [PATCH] Revert "clutter/stage: Avoid queueing stage updates when they're already queued" This reverts commit 261f516af4e635d4bb263bbbbb2f843f0cbe09de. --- clutter/clutter/clutter-stage-private.h | 2 +- clutter/clutter/clutter-stage-view.c | 2 +- clutter/clutter/clutter-stage.c | 30 +++++++++---------------- 3 files changed, 12 insertions(+), 22 deletions(-) diff --git a/clutter/clutter/clutter-stage-private.h b/clutter/clutter/clutter-stage-private.h index c2460b327..f84fb10fe 100644 --- a/clutter/clutter/clutter-stage-private.h +++ b/clutter/clutter/clutter-stage-private.h @@ -61,7 +61,7 @@ void clutter_stage_emit_before_paint (ClutterStage void clutter_stage_emit_after_paint (ClutterStage *stage, ClutterStageView *view, ClutterFrame *frame); -void clutter_stage_after_update (ClutterStage *stage, +void clutter_stage_emit_after_update (ClutterStage *stage, ClutterStageView *view, ClutterFrame *frame); diff --git a/clutter/clutter/clutter-stage-view.c b/clutter/clutter/clutter-stage-view.c index 168746dd4..b59d1cc00 100644 --- a/clutter/clutter/clutter-stage-view.c +++ b/clutter/clutter/clutter-stage-view.c @@ -1279,7 +1279,7 @@ handle_frame_clock_frame (ClutterFrameClock *frame_clock, priv->needs_update_devices = FALSE; _clutter_run_repaint_functions (CLUTTER_REPAINT_FLAGS_POST_PAINT); - clutter_stage_after_update (stage, view, frame); + clutter_stage_emit_after_update (stage, view, frame); return clutter_frame_get_result (frame); } diff --git a/clutter/clutter/clutter-stage.c b/clutter/clutter/clutter-stage.c index 47405872b..f1d40426f 100644 --- a/clutter/clutter/clutter-stage.c +++ b/clutter/clutter/clutter-stage.c @@ -137,8 +137,6 @@ struct _ClutterStagePrivate int update_freeze_count; - gboolean update_scheduled; - GHashTable *pointer_devices; GHashTable *touch_sequences; @@ -528,15 +526,11 @@ clutter_stage_emit_after_paint (ClutterStage *stage, } void -clutter_stage_after_update (ClutterStage *stage, - ClutterStageView *view, - ClutterFrame *frame) +clutter_stage_emit_after_update (ClutterStage *stage, + ClutterStageView *view, + ClutterFrame *frame) { - ClutterStagePrivate *priv = stage->priv; - g_signal_emit (stage, stage_signals[AFTER_UPDATE], 0, view, frame); - - priv->update_scheduled = FALSE; } static gboolean @@ -647,15 +641,19 @@ _clutter_stage_queue_event (ClutterStage *stage, gboolean copy_event) { ClutterStagePrivate *priv; + gboolean first_event; g_return_if_fail (CLUTTER_IS_STAGE (stage)); priv = stage->priv; + first_event = priv->event_queue->length == 0; + g_queue_push_tail (priv->event_queue, copy_event ? clutter_event_copy (event) : event); - clutter_stage_schedule_update (stage); + if (first_event) + clutter_stage_schedule_update (stage); } gboolean @@ -818,7 +816,8 @@ clutter_stage_queue_actor_relayout (ClutterStage *stage, { ClutterStagePrivate *priv = stage->priv; - clutter_stage_schedule_update (stage); + if (priv->pending_relayouts == NULL) + clutter_stage_schedule_update (stage); priv->pending_relayouts = g_slist_prepend (priv->pending_relayouts, g_object_ref (actor)); @@ -2532,19 +2531,12 @@ _clutter_stage_get_default_window (void) void clutter_stage_schedule_update (ClutterStage *stage) { - ClutterStagePrivate *priv = stage->priv; ClutterStageWindow *stage_window; - gboolean first_event; GList *l; if (CLUTTER_ACTOR_IN_DESTRUCTION (stage)) return; - first_event = priv->event_queue->length == 0; - - if (priv->update_scheduled && !first_event) - return; - stage_window = _clutter_stage_get_window (stage); if (stage_window == NULL) return; @@ -2555,8 +2547,6 @@ clutter_stage_schedule_update (ClutterStage *stage) clutter_stage_view_schedule_update (view); } - - priv->update_scheduled = TRUE; } ClutterPaintVolume * -- 2.44.0