diff --git a/src/renderer/gl_engine/tvgGlRenderer.cpp b/src/renderer/gl_engine/tvgGlRenderer.cpp index 67671d5a..fa88ac55 100644 --- a/src/renderer/gl_engine/tvgGlRenderer.cpp +++ b/src/renderer/gl_engine/tvgGlRenderer.cpp @@ -45,7 +45,7 @@ static void _termEngine() } -void GlRenderer::flush() +void GlRenderer::clearDisposes() { if (mDisposed.textures.count > 0) { glDeleteTextures(mDisposed.textures.count, mDisposed.textures.data); @@ -53,19 +53,21 @@ void GlRenderer::flush() } ARRAY_FOREACH(p, mRenderPassStack) delete(*p); - mRenderPassStack.clear(); +} + + +void GlRenderer::flush() +{ + clearDisposes(); ARRAY_FOREACH(p, mComposePool) delete(*p); - mComposePool.clear(); ARRAY_FOREACH(p, mBlendPool) delete(*p); - mBlendPool.clear(); ARRAY_FOREACH(p, mComposeStack) delete(*p); - mComposeStack.clear(); } @@ -850,7 +852,7 @@ bool GlRenderer::sync() GL_CHECK(glDisable(GL_SCISSOR_TEST)); - flush(); + clearDisposes(); delete task; diff --git a/src/renderer/gl_engine/tvgGlRenderer.h b/src/renderer/gl_engine/tvgGlRenderer.h index 9fb0580e..af8ae4aa 100644 --- a/src/renderer/gl_engine/tvgGlRenderer.h +++ b/src/renderer/gl_engine/tvgGlRenderer.h @@ -116,6 +116,7 @@ private: void endRenderPass(RenderCompositor* cmp); void flush(); + void clearDisposes(); void currentContext(); void* mContext = nullptr;