actor: Add private getter for the active framebuffer

Instead of asking every internal user to get the stage and get the
active framebuffer from it, we can wrap it up ourselves, and do some
sanity checks as well.
This commit is contained in:
Emmanuele Bassi 2013-12-03 12:11:43 +00:00
parent 00ef6e29ce
commit 1b45841414
2 changed files with 28 additions and 0 deletions

View File

@ -320,6 +320,8 @@ void _clutter_actor_queue_redraw_on_clones
void _clutter_actor_queue_relayout_on_clones (ClutterActor *actor); void _clutter_actor_queue_relayout_on_clones (ClutterActor *actor);
void _clutter_actor_queue_only_relayout (ClutterActor *actor); void _clutter_actor_queue_only_relayout (ClutterActor *actor);
CoglFramebuffer * _clutter_actor_get_active_framebuffer (ClutterActor *actor);
G_END_DECLS G_END_DECLS
#endif /* __CLUTTER_ACTOR_PRIVATE_H__ */ #endif /* __CLUTTER_ACTOR_PRIVATE_H__ */

View File

@ -20399,3 +20399,29 @@ clutter_actor_has_mapped_clones (ClutterActor *self)
return FALSE; return FALSE;
} }
CoglFramebuffer *
_clutter_actor_get_active_framebuffer (ClutterActor *self)
{
ClutterStage *stage;
if (!CLUTTER_ACTOR_IN_PAINT (self))
{
g_critical ("The active framebuffer of actor '%s' can only be "
"retrieved during the paint sequence. Please, check "
"your code.",
_clutter_actor_get_debug_name (self));
return NULL;
}
stage = (ClutterStage *) _clutter_actor_get_stage_internal (self);
if (stage == NULL)
{
g_critical ("The active framebuffer of actor '%s' is only available "
"if the actor is associated to a ClutterStage.",
_clutter_actor_get_debug_name (self));
return NULL;
}
return _clutter_stage_get_active_framebuffer (stage);
}