mirror of
https://github.com/thorvg/thorvg.git
synced 2025-06-13 11:36:25 +00:00
gl_engine: Fix memory leak caused by no deleted GlRenderTask
This commit is contained in:
parent
376acfacdb
commit
95dde5807e
3 changed files with 11 additions and 2 deletions
|
@ -259,6 +259,12 @@ void GlDrawBlitTask::run()
|
||||||
GlClipTask::GlClipTask(GlRenderTask* clip, GlRenderTask* mask)
|
GlClipTask::GlClipTask(GlRenderTask* clip, GlRenderTask* mask)
|
||||||
:GlRenderTask(nullptr), mClipTask(clip), mMaskTask(mask) {}
|
:GlRenderTask(nullptr), mClipTask(clip), mMaskTask(mask) {}
|
||||||
|
|
||||||
|
GlClipTask::~GlClipTask()
|
||||||
|
{
|
||||||
|
delete mClipTask;
|
||||||
|
delete mMaskTask;
|
||||||
|
}
|
||||||
|
|
||||||
void GlClipTask::run()
|
void GlClipTask::run()
|
||||||
{
|
{
|
||||||
GL_CHECK(glEnable(GL_STENCIL_TEST));
|
GL_CHECK(glEnable(GL_STENCIL_TEST));
|
||||||
|
|
|
@ -169,7 +169,7 @@ class GlClipTask : public GlRenderTask
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
GlClipTask(GlRenderTask* clip, GlRenderTask* mask);
|
GlClipTask(GlRenderTask* clip, GlRenderTask* mask);
|
||||||
~GlClipTask() override = default;
|
~GlClipTask() override;
|
||||||
|
|
||||||
void run() override;
|
void run() override;
|
||||||
|
|
||||||
|
|
|
@ -567,7 +567,10 @@ void GlRenderer::drawPrimitive(GlShape& sdata, uint8_t r, uint8_t g, uint8_t b,
|
||||||
auto task = new GlRenderTask(mPrograms[RT_Color].get());
|
auto task = new GlRenderTask(mPrograms[RT_Color].get());
|
||||||
task->setDrawDepth(depth);
|
task->setDrawDepth(depth);
|
||||||
|
|
||||||
if (!sdata.geometry->draw(task, mGpuBuffer.get(), flag)) return;
|
if (!sdata.geometry->draw(task, mGpuBuffer.get(), flag)) {
|
||||||
|
delete task;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
GlRenderTask* stencilTask = nullptr;
|
GlRenderTask* stencilTask = nullptr;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue