From: Benjamin Otte Date: Tue, 5 Oct 2021 23:23:02 +0000 (+0200) Subject: cairo-gl: Don't leak framebuffers X-Git-Tag: archive/raspbian/4.6.5+ds-1+rpi1~1^2~19^2~5^2~258^2~8 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=111c2769a5d25da3c97f39816656fa7ad45eeb27;p=gtk4.git cairo-gl: Don't leak framebuffers The framebufffer was cached, but never deleted. And because this function is deprecated and nobody should ever use it: Don't bother with caching now. --- diff --git a/gdk/gdkgl.c b/gdk/gdkgl.c index c6a73a7071..f5052f5ca0 100644 --- a/gdk/gdkgl.c +++ b/gdk/gdkgl.c @@ -355,10 +355,8 @@ gdk_cairo_draw_from_gl (cairo_t *cr, es_use_bgra = gdk_gl_context_use_es_bgra (paint_context); gdk_gl_context_make_current (paint_context); - paint_data = gdk_gl_context_get_paint_data (paint_context); - if (paint_data->tmp_framebuffer == 0) - glGenFramebuffers (1, &paint_data->tmp_framebuffer); + glGenFramebuffers (1, &framebuffer); if (source_type == GL_RENDERBUFFER) { @@ -397,7 +395,6 @@ gdk_cairo_draw_from_gl (cairo_t *cr, cairo_surface_set_device_scale (image, buffer_scale, buffer_scale); - framebuffer = paint_data->tmp_framebuffer; glBindFramebuffer (GL_FRAMEBUFFER, framebuffer); if (source_type == GL_RENDERBUFFER) @@ -428,6 +425,8 @@ gdk_cairo_draw_from_gl (cairo_t *cr, glBindFramebuffer (GL_FRAMEBUFFER, 0); + glDeleteFramebuffers (1, &framebuffer); + cairo_surface_mark_dirty (image); cairo_set_source_surface (cr, image, 0, 0);