summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2018-10-03 08:46:28 +0200
committerPaul Lemire <paul.lemire@kdab.com>2018-10-03 07:55:54 +0000
commitff07ec93db2b56fb3c3047549a1ad7c7d0e367e8 (patch)
tree104e9069b33d9e701934432a382603fb099122a6
parentc19036f8484e0ce08e4f38b7e0bd0d64772ded67 (diff)
Fix leak with VAOManager
Change-Id: I09f15de230c571adb580bdbb3250405f562f255b Task-number: QTBUG-70892 Reviewed-by: Juan José Casafranca <juan.casafranca@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
-rw-r--r--src/render/renderers/opengl/renderer/openglvertexarrayobject.cpp5
-rw-r--r--src/render/renderers/opengl/renderer/openglvertexarrayobject_p.h1
-rw-r--r--src/render/renderers/opengl/renderer/renderer.cpp3
3 files changed, 8 insertions, 1 deletions
diff --git a/src/render/renderers/opengl/renderer/openglvertexarrayobject.cpp b/src/render/renderers/opengl/renderer/openglvertexarrayobject.cpp
index 0c4fd8c9d..f5d0a64f5 100644
--- a/src/render/renderers/opengl/renderer/openglvertexarrayobject.cpp
+++ b/src/render/renderers/opengl/renderer/openglvertexarrayobject.cpp
@@ -108,6 +108,11 @@ void OpenGLVertexArrayObject::create(SubmissionContext *ctx, const VAOIdentifier
m_owners = key;
}
+VAOIdentifier OpenGLVertexArrayObject::key() const
+{
+ return m_owners;
+}
+
// called from Render thread
void OpenGLVertexArrayObject::destroy()
{
diff --git a/src/render/renderers/opengl/renderer/openglvertexarrayobject_p.h b/src/render/renderers/opengl/renderer/openglvertexarrayobject_p.h
index eee837221..4896df9bf 100644
--- a/src/render/renderers/opengl/renderer/openglvertexarrayobject_p.h
+++ b/src/render/renderers/opengl/renderer/openglvertexarrayobject_p.h
@@ -73,6 +73,7 @@ public:
void release();
void create(SubmissionContext *ctx, const VAOIdentifier &key);
+ VAOIdentifier key() const;
void destroy();
void cleanup();
diff --git a/src/render/renderers/opengl/renderer/renderer.cpp b/src/render/renderers/opengl/renderer/renderer.cpp
index 7319fd0e5..e1d237622 100644
--- a/src/render/renderers/opengl/renderer/renderer.cpp
+++ b/src/render/renderers/opengl/renderer/renderer.cpp
@@ -2142,7 +2142,8 @@ void Renderer::cleanGraphicsResources()
OpenGLVertexArrayObject *vao = m_nodesManager->vaoManager()->data(vaoHandle);
if (vao) {
vao->destroy();
- m_nodesManager->vaoManager()->release(vaoHandle);
+ // We remove VAO from manager using its VAOIdentifier
+ m_nodesManager->vaoManager()->releaseResource(vao->key());
}
}
}