clutter-*-effect: Remove cogl_rectangle()

All those effects have the same basic pattern of setting a
color of a pipeline, then drawing a rect with cogl_rectangle().

Thus, replacing those was as easy as retrieving the draw
framebuffer and calling cogl_framebuffer_draw_rectangle() on it.
This commit is contained in:
Georges Basile Stavracas Neto 2018-11-08 20:26:02 -02:00
parent 203725bfd3
commit 4c3d9fccc1
No known key found for this signature in database
GPG Key ID: 886C17EE170D1385
5 changed files with 29 additions and 24 deletions

View File

@ -160,6 +160,7 @@ static void
clutter_blur_effect_paint_target (ClutterOffscreenEffect *effect) clutter_blur_effect_paint_target (ClutterOffscreenEffect *effect)
{ {
ClutterBlurEffect *self = CLUTTER_BLUR_EFFECT (effect); ClutterBlurEffect *self = CLUTTER_BLUR_EFFECT (effect);
CoglFramebuffer *framebuffer = cogl_get_draw_framebuffer ();
guint8 paint_opacity; guint8 paint_opacity;
paint_opacity = clutter_actor_get_paint_opacity (self->actor); paint_opacity = clutter_actor_get_paint_opacity (self->actor);
@ -169,11 +170,11 @@ clutter_blur_effect_paint_target (ClutterOffscreenEffect *effect)
paint_opacity, paint_opacity,
paint_opacity, paint_opacity,
paint_opacity); paint_opacity);
cogl_push_source (self->pipeline);
cogl_rectangle (0, 0, self->tex_width, self->tex_height); cogl_framebuffer_draw_rectangle (framebuffer,
self->pipeline,
cogl_pop_source (); 0, 0,
self->tex_width, self->tex_height);
} }
static gboolean static gboolean

View File

@ -178,6 +178,7 @@ static void
clutter_brightness_contrast_effect_paint_target (ClutterOffscreenEffect *effect) clutter_brightness_contrast_effect_paint_target (ClutterOffscreenEffect *effect)
{ {
ClutterBrightnessContrastEffect *self = CLUTTER_BRIGHTNESS_CONTRAST_EFFECT (effect); ClutterBrightnessContrastEffect *self = CLUTTER_BRIGHTNESS_CONTRAST_EFFECT (effect);
CoglFramebuffer *framebuffer = cogl_get_draw_framebuffer ();
ClutterActor *actor; ClutterActor *actor;
guint8 paint_opacity; guint8 paint_opacity;
@ -189,11 +190,11 @@ clutter_brightness_contrast_effect_paint_target (ClutterOffscreenEffect *effect)
paint_opacity, paint_opacity,
paint_opacity, paint_opacity,
paint_opacity); paint_opacity);
cogl_push_source (self->pipeline);
cogl_rectangle (0, 0, self->tex_width, self->tex_height); cogl_framebuffer_draw_rectangle (framebuffer,
self->pipeline,
cogl_pop_source (); 0, 0,
self->tex_width, self->tex_height);
} }
static void static void

View File

@ -148,6 +148,7 @@ static void
clutter_colorize_effect_paint_target (ClutterOffscreenEffect *effect) clutter_colorize_effect_paint_target (ClutterOffscreenEffect *effect)
{ {
ClutterColorizeEffect *self = CLUTTER_COLORIZE_EFFECT (effect); ClutterColorizeEffect *self = CLUTTER_COLORIZE_EFFECT (effect);
CoglFramebuffer *framebuffer = cogl_get_draw_framebuffer ();
ClutterActor *actor; ClutterActor *actor;
guint8 paint_opacity; guint8 paint_opacity;
@ -159,11 +160,11 @@ clutter_colorize_effect_paint_target (ClutterOffscreenEffect *effect)
paint_opacity, paint_opacity,
paint_opacity, paint_opacity,
paint_opacity); paint_opacity);
cogl_push_source (self->pipeline);
cogl_rectangle (0, 0, self->tex_width, self->tex_height); cogl_framebuffer_draw_rectangle (framebuffer,
self->pipeline,
cogl_pop_source (); 0, 0,
self->tex_width, self->tex_height);
} }
static void static void

View File

@ -155,6 +155,7 @@ static void
clutter_desaturate_effect_paint_target (ClutterOffscreenEffect *effect) clutter_desaturate_effect_paint_target (ClutterOffscreenEffect *effect)
{ {
ClutterDesaturateEffect *self = CLUTTER_DESATURATE_EFFECT (effect); ClutterDesaturateEffect *self = CLUTTER_DESATURATE_EFFECT (effect);
CoglFramebuffer *framebuffer = cogl_get_draw_framebuffer ();
ClutterActor *actor; ClutterActor *actor;
CoglHandle texture; CoglHandle texture;
guint8 paint_opacity; guint8 paint_opacity;
@ -170,13 +171,12 @@ clutter_desaturate_effect_paint_target (ClutterOffscreenEffect *effect)
paint_opacity, paint_opacity,
paint_opacity, paint_opacity,
paint_opacity); paint_opacity);
cogl_push_source (self->pipeline);
cogl_rectangle (0, 0, cogl_framebuffer_draw_rectangle (framebuffer,
cogl_texture_get_width (texture), self->pipeline,
cogl_texture_get_height (texture)); 0, 0,
cogl_texture_get_width (texture),
cogl_pop_source (); cogl_texture_get_height (texture));
} }
static void static void

View File

@ -352,6 +352,7 @@ static void
clutter_offscreen_effect_real_paint_target (ClutterOffscreenEffect *effect) clutter_offscreen_effect_real_paint_target (ClutterOffscreenEffect *effect)
{ {
ClutterOffscreenEffectPrivate *priv = effect->priv; ClutterOffscreenEffectPrivate *priv = effect->priv;
CoglFramebuffer *framebuffer = cogl_get_draw_framebuffer ();
guint8 paint_opacity; guint8 paint_opacity;
paint_opacity = clutter_actor_get_paint_opacity (priv->actor); paint_opacity = clutter_actor_get_paint_opacity (priv->actor);
@ -361,18 +362,19 @@ clutter_offscreen_effect_real_paint_target (ClutterOffscreenEffect *effect)
paint_opacity, paint_opacity,
paint_opacity, paint_opacity,
paint_opacity); paint_opacity);
cogl_set_source (priv->target);
/* At this point we are in stage coordinates translated so if /* At this point we are in stage coordinates translated so if
* we draw our texture using a textured quad the size of the paint * we draw our texture using a textured quad the size of the paint
* box then we will overlay where the actor would have drawn if it * box then we will overlay where the actor would have drawn if it
* hadn't been redirected offscreen. * hadn't been redirected offscreen.
*/ */
cogl_rectangle_with_texture_coords (0, 0, cogl_framebuffer_draw_textured_rectangle (framebuffer,
cogl_texture_get_width (priv->texture), priv->target,
cogl_texture_get_height (priv->texture), 0, 0,
0.0, 0.0, cogl_texture_get_width (priv->texture),
1.0, 1.0); cogl_texture_get_height (priv->texture),
0.0, 0.0,
1.0, 1.0);
} }
static void static void