[clutter] stage: Use the iterator API instead of the DOM one
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [clutter] stage: Use the iterator API instead of the DOM one
- Date: Fri, 27 Jan 2012 11:56:54 +0000 (UTC)
commit c6e14914740f0ac274cf92a294634b8955d85349
Author: Emmanuele Bassi <ebassi linux intel com>
Date: Wed Jan 25 15:31:51 2012 +0000
stage: Use the iterator API instead of the DOM one
Whenever we're iterating over the children of the Stage we can now use
the ClutterActorIter API.
https://bugzilla.gnome.org/show_bug.cgi?id=668669
clutter/clutter-stage.c | 54 ++++++++++++++++++----------------------------
1 files changed, 21 insertions(+), 33 deletions(-)
---
diff --git a/clutter/clutter-stage.c b/clutter/clutter-stage.c
index 8cd091b..d01fca9 100644
--- a/clutter/clutter-stage.c
+++ b/clutter/clutter-stage.c
@@ -234,17 +234,13 @@ clutter_stage_real_foreach (ClutterContainer *container,
ClutterCallback callback,
gpointer user_data)
{
- ClutterActor *iter;
-
- iter = clutter_actor_get_first_child (CLUTTER_ACTOR (container));
- while (iter != NULL)
- {
- ClutterActor *next = clutter_actor_get_next_sibling (iter);
+ ClutterActorIter iter;
+ ClutterActor *child;
- callback (iter, user_data);
+ clutter_actor_iter_init (&iter, CLUTTER_ACTOR (container));
- iter = next;
- }
+ while (clutter_actor_iter_next (&iter, &child))
+ callback (child, user_data);
}
static void
@@ -678,6 +674,7 @@ clutter_stage_paint (ClutterActor *self)
ClutterStagePrivate *priv = CLUTTER_STAGE (self)->priv;
CoglBufferBit clear_flags;
CoglColor stage_color;
+ ClutterActorIter iter;
ClutterActor *child;
guint8 real_alpha;
@@ -732,30 +729,25 @@ clutter_stage_paint (ClutterActor *self)
cogl_disable_fog ();
#endif
- for (child = clutter_actor_get_first_child (self);
- child != NULL;
- child = clutter_actor_get_next_sibling (child))
- {
- clutter_actor_paint (child);
- }
+ clutter_actor_iter_init (&iter, self);
+ while (clutter_actor_iter_next (&iter, &child))
+ clutter_actor_paint (child);
}
static void
clutter_stage_pick (ClutterActor *self,
const ClutterColor *color)
{
+ ClutterActorIter iter;
ClutterActor *child;
/* Note: we don't chain up to our parent as we don't want any geometry
* emitted for the stage itself. The stage's pick id is effectively handled
* by the call to cogl_clear done in clutter-main.c:_clutter_do_pick_async()
*/
- for (child = clutter_actor_get_first_child (self);
- child != NULL;
- child = clutter_actor_get_next_sibling (child))
- {
- clutter_actor_paint (child);
- }
+ clutter_actor_iter_init (&iter, self);
+ while (clutter_actor_iter_next (&iter, &child))
+ clutter_actor_paint (child);
}
static gboolean
@@ -819,14 +811,12 @@ static void
clutter_stage_show (ClutterActor *self)
{
ClutterStagePrivate *priv = CLUTTER_STAGE (self)->priv;
+ ClutterActorIter iter;
ClutterActor *child;
- for (child = clutter_actor_get_first_child (self);
- child != NULL;
- child = clutter_actor_get_next_sibling (child))
- {
- clutter_actor_show (child);
- }
+ clutter_actor_iter_init (&iter, self);
+ while (clutter_actor_iter_next (&iter, &child))
+ clutter_actor_show (child);
CLUTTER_ACTOR_CLASS (clutter_stage_parent_class)->show (self);
@@ -842,17 +832,15 @@ static void
clutter_stage_hide (ClutterActor *self)
{
ClutterStagePrivate *priv = CLUTTER_STAGE (self)->priv;
+ ClutterActorIter iter;
ClutterActor *child;
g_assert (priv->impl != NULL);
_clutter_stage_window_hide (priv->impl);
- for (child = clutter_actor_get_first_child (self);
- child != NULL;
- child = clutter_actor_get_next_sibling (child))
- {
- clutter_actor_show (child);
- }
+ clutter_actor_iter_init (&iter, self);
+ while (clutter_actor_iter_next (&iter, &child))
+ clutter_actor_show (child);
CLUTTER_ACTOR_CLASS (clutter_stage_parent_class)->hide (self);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]