clutter/offscreen-effect: Use paint nodes to paint target

Add a new ClutterPaintNode parameter to the paint_target() vfunc.
For now, create a temporary ClutterEffectNode that is passed to
paint_target() and immediately painted; next commits will move
this to upper layers.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1355>
This commit is contained in:
Georges Basile Stavracas Neto
2020-07-05 17:44:38 -03:00
parent 691d31748a
commit 26c1a5eedf
5 changed files with 64 additions and 23 deletions

View File

@ -37,6 +37,7 @@ G_DEFINE_TYPE (FooOldShaderEffect,
static void
foo_old_shader_effect_paint_target (ClutterOffscreenEffect *effect,
ClutterPaintNode *node,
ClutterPaintContext *paint_context)
{
clutter_shader_effect_set_shader_source (CLUTTER_SHADER_EFFECT (effect),
@ -47,7 +48,7 @@ foo_old_shader_effect_paint_target (ClutterOffscreenEffect *effect,
1.0f, 0.0f, 0.0f);
CLUTTER_OFFSCREEN_EFFECT_CLASS (foo_old_shader_effect_parent_class)->
paint_target (effect, paint_context);
paint_target (effect, node, paint_context);
}
static void
@ -112,6 +113,7 @@ foo_new_shader_effect_get_static_source (ClutterShaderEffect *effect)
static void
foo_new_shader_effect_paint_target (ClutterOffscreenEffect *effect,
ClutterPaintNode *node,
ClutterPaintContext *paint_context)
{
clutter_shader_effect_set_uniform (CLUTTER_SHADER_EFFECT (effect),
@ -120,7 +122,7 @@ foo_new_shader_effect_paint_target (ClutterOffscreenEffect *effect,
0.0f, 1.0f, 0.0f);
CLUTTER_OFFSCREEN_EFFECT_CLASS (foo_new_shader_effect_parent_class)->
paint_target (effect, paint_context);
paint_target (effect, node, paint_context);
}
static void