[texture] split out fbo update code from cluter_texture_paint
To help keep clutter_texture_paint maintainable this splits out a big chunk of standalone code that's responsible for updating the fbo when clutter_texture_new_from_actor has been used.
This commit is contained in:
parent
2762e6d9b9
commit
94a6028358
@ -512,29 +512,15 @@ clutter_texture_set_fbo_projection (ClutterActor *self)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_texture_paint (ClutterActor *self)
|
update_fbo (ClutterActor *self)
|
||||||
{
|
{
|
||||||
ClutterTexture *texture = CLUTTER_TEXTURE (self);
|
ClutterTexture *texture = CLUTTER_TEXTURE (self);
|
||||||
ClutterTexturePrivate *priv = texture->priv;
|
ClutterTexturePrivate *priv = texture->priv;
|
||||||
ClutterActorBox box = { 0, };
|
|
||||||
CoglColor transparent_col;
|
|
||||||
gfloat t_w, t_h;
|
|
||||||
guint8 paint_opacity = clutter_actor_get_paint_opacity (self);
|
|
||||||
|
|
||||||
if (paint_opacity == 0)
|
|
||||||
{
|
|
||||||
/* Bail early if painting the actor would be a no-op, custom actors that
|
|
||||||
* might cause a lot of work/state changes should all do this.
|
|
||||||
*/
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (priv->fbo_handle != COGL_INVALID_HANDLE)
|
|
||||||
{
|
|
||||||
ClutterMainContext *context;
|
ClutterMainContext *context;
|
||||||
ClutterShader *shader = NULL;
|
ClutterShader *shader = NULL;
|
||||||
ClutterActor *stage = NULL;
|
ClutterActor *stage = NULL;
|
||||||
ClutterPerspective perspective;
|
ClutterPerspective perspective;
|
||||||
|
CoglColor transparent_col;
|
||||||
|
|
||||||
context = _clutter_context_get_default ();
|
context = _clutter_context_get_default ();
|
||||||
|
|
||||||
@ -587,7 +573,7 @@ clutter_texture_paint (ClutterActor *self)
|
|||||||
COGL_BUFFER_BIT_DEPTH);
|
COGL_BUFFER_BIT_DEPTH);
|
||||||
cogl_disable_fog ();
|
cogl_disable_fog ();
|
||||||
|
|
||||||
/* Render out actor scene to fbo */
|
/* Render the actor to the fbo */
|
||||||
clutter_actor_paint (priv->fbo_source);
|
clutter_actor_paint (priv->fbo_source);
|
||||||
|
|
||||||
/* Restore drawing to the previous draw buffer */
|
/* Restore drawing to the previous draw buffer */
|
||||||
@ -605,6 +591,26 @@ clutter_texture_paint (ClutterActor *self)
|
|||||||
clutter_shader_set_is_enabled (shader, TRUE);
|
clutter_shader_set_is_enabled (shader, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
clutter_texture_paint (ClutterActor *self)
|
||||||
|
{
|
||||||
|
ClutterTexture *texture = CLUTTER_TEXTURE (self);
|
||||||
|
ClutterTexturePrivate *priv = texture->priv;
|
||||||
|
ClutterActorBox box = { 0, };
|
||||||
|
gfloat t_w, t_h;
|
||||||
|
guint8 paint_opacity = clutter_actor_get_paint_opacity (self);
|
||||||
|
|
||||||
|
if (paint_opacity == 0)
|
||||||
|
{
|
||||||
|
/* Bail early if painting the actor would be a no-op, custom actors that
|
||||||
|
* might cause a lot of work/state changes should all do this.
|
||||||
|
*/
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (priv->fbo_handle != COGL_INVALID_HANDLE)
|
||||||
|
update_fbo (self);
|
||||||
|
|
||||||
CLUTTER_NOTE (PAINT,
|
CLUTTER_NOTE (PAINT,
|
||||||
"painting texture '%s'",
|
"painting texture '%s'",
|
||||||
clutter_actor_get_name (self) ? clutter_actor_get_name (self)
|
clutter_actor_get_name (self) ? clutter_actor_get_name (self)
|
||||||
|
Loading…
Reference in New Issue
Block a user