summaryrefslogtreecommitdiff
path: root/clutter/clutter/clutter-stage.c
diff options
context:
space:
mode:
Diffstat (limited to 'clutter/clutter/clutter-stage.c')
-rw-r--r--clutter/clutter/clutter-stage.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/clutter/clutter/clutter-stage.c b/clutter/clutter/clutter-stage.c
index ca0ab44de..7aa46517c 100644
--- a/clutter/clutter/clutter-stage.c
+++ b/clutter/clutter/clutter-stage.c
@@ -142,6 +142,8 @@ struct _ClutterStagePrivate
int update_freeze_count;
+ gboolean needs_update;
+
guint redraw_pending : 1;
guint throttle_motion_events : 1;
guint min_size_changed : 1;
@@ -1308,7 +1310,9 @@ _clutter_stage_needs_update (ClutterStage *stage)
priv = stage->priv;
- return priv->redraw_pending || g_hash_table_size (priv->pending_relayouts) > 0;
+ return (priv->redraw_pending ||
+ priv->needs_update ||
+ g_hash_table_size (priv->pending_relayouts) > 0);
}
void
@@ -1499,6 +1503,8 @@ _clutter_stage_do_update (ClutterStage *stage)
priv->stage_was_relayout = FALSE;
+ priv->needs_update = FALSE;
+
/* if the stage is being destroyed, or if the destruction already
* happened and we don't have an StageWindow any more, then we
* should bail out
@@ -3453,6 +3459,8 @@ _clutter_stage_schedule_update (ClutterStage *stage)
if (stage_window == NULL)
return;
+ stage->priv->needs_update = TRUE;
+
return _clutter_stage_window_schedule_update (stage_window,
stage->priv->sync_delay);
}