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 <robert@linux.intel.com>
This commit is contained in:
Ray Strode 2010-09-29 18:43:30 -04:00 committed by Robert Bragg
parent fba6335291
commit 32d647ddd1

View File

@ -3212,6 +3212,8 @@ _clutter_stage_queue_actor_redraw (ClutterStage *stage,
_clutter_paint_volume_init_static (actor, &entry->clip); _clutter_paint_volume_init_static (actor, &entry->clip);
_clutter_paint_volume_set_from_volume (&entry->clip, clip); _clutter_paint_volume_set_from_volume (&entry->clip, clip);
} }
else
entry->has_clip = FALSE;
stage->priv->pending_queue_redraws = stage->priv->pending_queue_redraws =
g_list_prepend (stage->priv->pending_queue_redraws, entry); g_list_prepend (stage->priv->pending_queue_redraws, entry);
@ -3236,7 +3238,10 @@ _clutter_stage_queue_redraw_entry_invalidate (
g_object_unref (entry->actor); g_object_unref (entry->actor);
entry->actor = NULL; entry->actor = NULL;
if (entry->has_clip) if (entry->has_clip)
{
clutter_paint_volume_free (&entry->clip); clutter_paint_volume_free (&entry->clip);
entry->has_clip = FALSE;
}
} }
static void static void