diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c index 23ef03dc1..4279d3476 100644 --- a/clutter/clutter/clutter-actor.c +++ b/clutter/clutter/clutter-actor.c @@ -1264,6 +1264,10 @@ clutter_actor_set_mapped (ClutterActor *self, if (CLUTTER_ACTOR_IS_MAPPED (self) == mapped) return; + g_return_if_fail (!CLUTTER_ACTOR_IN_MAP_UNMAP (self)); + + CLUTTER_SET_PRIVATE_FLAGS (self, CLUTTER_IN_MAP_UNMAP); + if (mapped) { CLUTTER_ACTOR_GET_CLASS (self)->map (self); @@ -1274,6 +1278,8 @@ clutter_actor_set_mapped (ClutterActor *self, CLUTTER_ACTOR_GET_CLASS (self)->unmap (self); g_assert (!CLUTTER_ACTOR_IS_MAPPED (self)); } + + CLUTTER_UNSET_PRIVATE_FLAGS (self, CLUTTER_IN_MAP_UNMAP); } /* this function updates the mapped and realized states according to diff --git a/clutter/clutter/clutter-private.h b/clutter/clutter/clutter-private.h index 377b31879..117902a35 100644 --- a/clutter/clutter/clutter-private.h +++ b/clutter/clutter/clutter-private.h @@ -69,6 +69,7 @@ typedef struct _ClutterMainContext ClutterMainContext; #define CLUTTER_ACTOR_IN_PREF_WIDTH(a) ((CLUTTER_PRIVATE_FLAGS (a) & CLUTTER_IN_PREF_WIDTH) != FALSE) #define CLUTTER_ACTOR_IN_PREF_HEIGHT(a) ((CLUTTER_PRIVATE_FLAGS (a) & CLUTTER_IN_PREF_HEIGHT) != FALSE) #define CLUTTER_ACTOR_IN_PREF_SIZE(a) ((CLUTTER_PRIVATE_FLAGS (a) & (CLUTTER_IN_PREF_HEIGHT|CLUTTER_IN_PREF_WIDTH)) != FALSE) +#define CLUTTER_ACTOR_IN_MAP_UNMAP(a) ((CLUTTER_PRIVATE_FLAGS (a) & CLUTTER_IN_MAP_UNMAP) != FALSE) #define CLUTTER_PARAM_READABLE (G_PARAM_READABLE | G_PARAM_STATIC_STRINGS) #define CLUTTER_PARAM_WRITABLE (G_PARAM_WRITABLE | G_PARAM_STATIC_STRINGS) @@ -105,6 +106,8 @@ typedef enum /* Used to avoid recursion */ CLUTTER_IN_RELAYOUT = 1 << 7, + + CLUTTER_IN_MAP_UNMAP = 1 << 8, } ClutterPrivateFlags; /*