From 552d4bcee1493a3d046e0419c76851562cf51e31 Mon Sep 17 00:00:00 2001 From: RuiwenTang Date: Mon, 11 Nov 2024 11:40:46 +0800 Subject: [PATCH] gl_engine: Fix repeated clip drawing causes performance degradation The clips need to be cleared every time when shape update. Otherwise, the increasing number of clips will hurt the performance. --- src/renderer/gl_engine/tvgGlRenderer.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/renderer/gl_engine/tvgGlRenderer.cpp b/src/renderer/gl_engine/tvgGlRenderer.cpp index 85b5ea6c..f7ec6ee3 100644 --- a/src/renderer/gl_engine/tvgGlRenderer.cpp +++ b/src/renderer/gl_engine/tvgGlRenderer.cpp @@ -1320,7 +1320,10 @@ RenderData GlRenderer::prepare(RenderSurface* image, RenderData data, const Matr sdata->geometry->tesselate(image, flags); - if (!clips.empty()) sdata->clips.push(clips); + if (!clips.empty()) { + sdata->clips.clear(); + sdata->clips.push(clips); + } return sdata; } @@ -1376,7 +1379,10 @@ RenderData GlRenderer::prepare(const RenderShape& rshape, RenderData data, const if (!sdata->geometry->tesselate(rshape, sdata->updateFlag)) return sdata; } - if (!clipper && !clips.empty()) sdata->clips.push(clips); + if (!clipper && !clips.empty()) { + sdata->clips.clear(); + sdata->clips.push(clips); + } return sdata; }