summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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());
}
}
}