diff --git a/gsk/gpu/gskgpubufferwriter.c b/gsk/gpu/gskgpubufferwriter.c index 3f72122526..cc3eb39de9 100644 --- a/gsk/gpu/gskgpubufferwriter.c +++ b/gsk/gpu/gskgpubufferwriter.c @@ -116,3 +116,12 @@ gsk_gpu_buffer_writer_append_rect (GskGpuBufferWriter *self, gsk_gpu_buffer_writer_append (self, G_ALIGNOF (float), (guchar *) f, sizeof (f)); } + +void +gsk_gpu_buffer_writer_append_rgba (GskGpuBufferWriter *self, + const GdkRGBA *rgba) +{ + float f[4] = { rgba->red, rgba->green, rgba->blue, rgba->alpha }; + + gsk_gpu_buffer_writer_append (self, G_ALIGNOF (float), (guchar *) f, sizeof (f)); +} diff --git a/gsk/gpu/gskgpubufferwriterprivate.h b/gsk/gpu/gskgpubufferwriterprivate.h index 0134c1c8d6..5c915f43ce 100644 --- a/gsk/gpu/gskgpubufferwriterprivate.h +++ b/gsk/gpu/gskgpubufferwriterprivate.h @@ -47,5 +47,7 @@ void gsk_gpu_buffer_writer_append_vec4 (GskGpuB void gsk_gpu_buffer_writer_append_rect (GskGpuBufferWriter *self, const graphene_rect_t *rect, const graphene_point_t *offset); +void gsk_gpu_buffer_writer_append_rgba (GskGpuBufferWriter *self, + const GdkRGBA *rgba); G_END_DECLS diff --git a/gsk/gpu/gskgpunodeprocessor.c b/gsk/gpu/gskgpunodeprocessor.c index 64b44c95ac..1a54fe36b0 100644 --- a/gsk/gpu/gskgpunodeprocessor.c +++ b/gsk/gpu/gskgpunodeprocessor.c @@ -690,15 +690,8 @@ gsk_gpu_node_processor_create_color_pattern (GskGpuNodeProcessor *self, gsize n_images, gsize *out_n_images) { - const GdkRGBA *rgba; - - rgba = gsk_color_node_get_color (node); - gsk_gpu_buffer_writer_append_uint (writer, GSK_GPU_PATTERN_COLOR); - gsk_gpu_buffer_writer_append_float (writer, rgba->red); - gsk_gpu_buffer_writer_append_float (writer, rgba->green); - gsk_gpu_buffer_writer_append_float (writer, rgba->blue); - gsk_gpu_buffer_writer_append_float (writer, rgba->alpha); + gsk_gpu_buffer_writer_append_rgba (writer, gsk_color_node_get_color (node)); return TRUE; }