From: Emmanuele Bassi Date: Tue, 26 Sep 2023 13:40:37 +0000 (+0100) Subject: broadway: Plug another leak X-Git-Tag: archive/raspbian/4.12.4+ds-3+rpi1^2~21^2~1^2~12 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=098796e0e65b6b839964e21e5aa70c6c210bbf0f;p=gtk4.git broadway: Plug another leak When getting a colorized texture we're downloading the texture as a Cairo surface, and then feeding it to another texture, but we never drop the reference of the new surface. --- diff --git a/gsk/broadway/gskbroadwayrenderer.c b/gsk/broadway/gskbroadwayrenderer.c index f32e1e165e..6ea711ffea 100644 --- a/gsk/broadway/gskbroadwayrenderer.c +++ b/gsk/broadway/gskbroadwayrenderer.c @@ -451,7 +451,7 @@ get_colorized_texture (GdkTexture *texture, const graphene_matrix_t *color_matrix, const graphene_vec4_t *color_offset) { - cairo_surface_t *surface = gdk_texture_download_surface (texture); + cairo_surface_t *surface; cairo_surface_t *image_surface; graphene_vec4_t pixel; guint32* pixel_data; @@ -473,6 +473,7 @@ get_colorized_texture (GdkTexture *texture, return g_object_ref (colorized->texture); } + surface = gdk_texture_download_surface (texture); image_surface = cairo_surface_map_to_image (surface, NULL); data = cairo_image_surface_get_data (image_surface); width = cairo_image_surface_get_width (image_surface); @@ -534,6 +535,8 @@ get_colorized_texture (GdkTexture *texture, colorized_list, (GDestroyNotify)colorized_texture_free_list); } + cairo_surface_destroy (surface); + return colorized_texture; }