From: Timm Bäder Date: Fri, 11 Oct 2019 13:06:51 +0000 (+0200) Subject: gl renderer: Don't copy colors into render ops X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2~20^2~746 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=f7c64b4ebb213f7cb6a942317f7def6dc7cbe811;p=gtk4.git gl renderer: Don't copy colors into render ops --- diff --git a/gsk/gl/gskglrenderer.c b/gsk/gl/gskglrenderer.c index 137f64d3ea..bcd221ac6b 100644 --- a/gsk/gl/gskglrenderer.c +++ b/gsk/gl/gskglrenderer.c @@ -23,6 +23,7 @@ #include "gdk/gdkgltextureprivate.h" #include "gdk/gdkglcontextprivate.h" #include "gdk/gdkprofilerprivate.h" +#include "gdk/gdkrgbaprivate.h" #include #include @@ -398,8 +399,10 @@ add_rect_outline_ops (GskGLRenderer *self, RenderOpBuilder *builder, const graphene_rect_t *rect) { + GdkRGBA *color = gdk_rgba_copy (&GDK_RGBA ("#F00")); /* Leaked */ + ops_set_program (builder, &self->color_program); - ops_set_color (builder, &(GdkRGBA) { 1, 0, 0, 1 }); + ops_set_color (builder, color); add_rect_ops (builder, &GRAPHENE_RECT_INIT (rect->origin.x, rect->origin.y, @@ -2122,9 +2125,13 @@ static inline void apply_color_op (const Program *program, const RenderOp *op) { - OP_PRINT (" -> Color: (%f, %f, %f, %f)", op->color.red, op->color.green, op->color.blue, op->color.alpha); + OP_PRINT (" -> Color: (%f, %f, %f, %f)", + op->color->red, op->color->green, op->color->blue, op->color->alpha); glUniform4f (program->color.color_location, - op->color.red, op->color.green, op->color.blue, op->color.alpha); + op->color->red, + op->color->green, + op->color->blue, + op->color->alpha); } static inline void diff --git a/gsk/gl/gskglrenderops.c b/gsk/gl/gskglrenderops.c index f7105f202a..98736bcaca 100644 --- a/gsk/gl/gskglrenderops.c +++ b/gsk/gl/gskglrenderops.c @@ -649,7 +649,7 @@ ops_set_color (RenderOpBuilder *builder, current_program_state->color = *color; op = ops_begin (builder, OP_CHANGE_COLOR); - op->color = *color; + op->color = color; } void diff --git a/gsk/gl/gskglrenderopsprivate.h b/gsk/gl/gskglrenderopsprivate.h index 91ff2faa88..5f43eace61 100644 --- a/gsk/gl/gskglrenderopsprivate.h +++ b/gsk/gl/gskglrenderopsprivate.h @@ -159,7 +159,7 @@ typedef struct const Program *program; int texture_id; int render_target_id; - GdkRGBA color; + const GdkRGBA *color; GskQuadVertex vertex_data[6]; GskRoundedRect clip; graphene_rect_t viewport;