File 0001-Revert-clutter-stage-Avoid-queueing-stage-updates-wh.patch of Package mutter

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

openSUSE Build Service is sponsored by