mirror of
https://github.com/brl/mutter.git
synced 2024-11-21 23:50:41 -05:00
clutter/stage: Add 'pending_finish_queue_redraws' state
This will allow anyone to finish any queued redraws making their corresponding damage end up being posted to the stage views. This will allow units to check whether, so far, any updates are queued on a particular stage view. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1285
This commit is contained in:
parent
62f251574f
commit
33450700dc
@ -140,6 +140,7 @@ struct _ClutterStagePrivate
|
||||
int update_freeze_count;
|
||||
|
||||
gboolean needs_update;
|
||||
gboolean pending_finish_queue_redraws;
|
||||
|
||||
guint redraw_pending : 1;
|
||||
guint throttle_motion_events : 1;
|
||||
@ -3257,6 +3258,8 @@ _clutter_stage_queue_actor_redraw (ClutterStage *stage,
|
||||
*/
|
||||
priv->cached_pick_mode = CLUTTER_PICK_NONE;
|
||||
|
||||
priv->pending_finish_queue_redraws = TRUE;
|
||||
|
||||
if (!priv->redraw_pending)
|
||||
{
|
||||
ClutterMasterClock *master_clock;
|
||||
@ -3356,6 +3359,13 @@ _clutter_stage_queue_redraw_entry_invalidate (ClutterStageQueueRedrawEntry *entr
|
||||
static void
|
||||
clutter_stage_maybe_finish_queue_redraws (ClutterStage *stage)
|
||||
{
|
||||
ClutterStagePrivate *priv = stage->priv;
|
||||
|
||||
if (!priv->pending_finish_queue_redraws)
|
||||
return;
|
||||
|
||||
priv->pending_finish_queue_redraws = FALSE;
|
||||
|
||||
/* Note: we have to repeat until the pending_queue_redraws list is
|
||||
* empty because actors are allowed to queue redraws in response to
|
||||
* the queue-redraw signal. For example Clone actors or
|
||||
|
Loading…
Reference in New Issue
Block a user