From e40bd4d3dd882fa798b7fd5cdf39f5d96c4d2d22 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Fri, 27 Oct 2023 07:37:29 -0700 Subject: [PATCH] [Impeller] Fix leak of framebuffers used in GLES MSAA rendering (flutter/engine#47362) --- .../impeller/renderer/backend/gles/render_pass_gles.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/engine/src/flutter/impeller/renderer/backend/gles/render_pass_gles.cc b/engine/src/flutter/impeller/renderer/backend/gles/render_pass_gles.cc index 265fa1b492f..651e7711225 100644 --- a/engine/src/flutter/impeller/renderer/backend/gles/render_pass_gles.cc +++ b/engine/src/flutter/impeller/renderer/backend/gles/render_pass_gles.cc @@ -488,6 +488,13 @@ struct RenderPassData { FML_DCHECK(gl.BlitFramebuffer.IsAvailable()); GLuint draw_fbo = GL_NONE; + fml::ScopedCleanupClosure delete_draw_fbo([&gl, &draw_fbo, fbo]() { + if (draw_fbo != GL_NONE) { + gl.BindFramebuffer(GL_FRAMEBUFFER, fbo); + gl.DeleteFramebuffers(1u, &draw_fbo); + } + }); + gl.GenFramebuffers(1u, &draw_fbo); gl.BindFramebuffer(GL_FRAMEBUFFER, draw_fbo);