From 32d647ddd15ebddf91aa15b092fdcdf14d31ec4f Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 29 Sep 2010 18:43:30 -0400 Subject: [PATCH] actor: sync entry has_clip member to clip state The clutter stage has a list of entries of actors waiting to be redrawn. Each entry has a "clip" ClutterPaintVolume member which represents which how much of the actor needs to get redrawn. It's possible for there to be no clip associated with the entry. In this case, the clip member is invalid, the has_clip member should be set to false. This commit fixes a bug where the has_clip member was not being initially, explicitly set to false for new entries, and not being explicitly set to false in the event the clip associated with the entry is freed. http://bugzilla.clutter-project.org/show_bug.cgi?id=2350 Signed-off-by: Robert Bragg --- clutter/clutter-stage.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/clutter/clutter-stage.c b/clutter/clutter-stage.c index 1c4bb6016..b50fab840 100644 --- a/clutter/clutter-stage.c +++ b/clutter/clutter-stage.c @@ -3212,6 +3212,8 @@ _clutter_stage_queue_actor_redraw (ClutterStage *stage, _clutter_paint_volume_init_static (actor, &entry->clip); _clutter_paint_volume_set_from_volume (&entry->clip, clip); } + else + entry->has_clip = FALSE; stage->priv->pending_queue_redraws = g_list_prepend (stage->priv->pending_queue_redraws, entry); @@ -3236,7 +3238,10 @@ _clutter_stage_queue_redraw_entry_invalidate ( g_object_unref (entry->actor); entry->actor = NULL; if (entry->has_clip) - clutter_paint_volume_free (&entry->clip); + { + clutter_paint_volume_free (&entry->clip); + entry->has_clip = FALSE; + } } static void