mutter/0001-Revert-clutter-stage-Avoid-queueing-stage-updates-wh.patch

135 lines
4.6 KiB
Diff

From 3f3c8876e0494cf7af92ce9b216da70fd4c0c275 Mon Sep 17 00:00:00 2001
From: Xiaoguang Wang <sun.wxg@gmail.com>
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