diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2019-10-11 09:15:12 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2019-10-14 20:36:43 +0200 |
commit | da5a4af50076515abbf04691e8a5dfca5daaca9e (patch) | |
tree | 2e5a3d07febab846061cc62d0313181087d8fed4 /src/render/renderers/opengl/renderer/renderer.cpp | |
parent | f8ab61438164a828e2f0c6e9e4a5cdeaa7b6a62c (diff) |
ShaderBuilder: ensure no old updates are left over
Could result in trying to send updates to nodes which have been destroyed.
Change-Id: I3709277e5005f25ec8cb9efe0a2152f879bea89f
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Diffstat (limited to 'src/render/renderers/opengl/renderer/renderer.cpp')
-rw-r--r-- | src/render/renderers/opengl/renderer/renderer.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/render/renderers/opengl/renderer/renderer.cpp b/src/render/renderers/opengl/renderer/renderer.cpp index 3da9b6c48..c3e986854 100644 --- a/src/render/renderers/opengl/renderer/renderer.cpp +++ b/src/render/renderers/opengl/renderer/renderer.cpp @@ -1115,7 +1115,7 @@ void Renderer::reloadDirtyShaders() if (shaderBuilder->isShaderCodeDirty(shaderType)) { shaderBuilder->generateCode(shaderType); - m_shaderBuilderUpdates.append(std::move(shaderBuilder->updates())); + m_shaderBuilderUpdates.append(shaderBuilder->takePendingUpdates()); } const auto code = shaderBuilder->shaderCode(shaderType); @@ -1143,9 +1143,9 @@ void Renderer::sendShaderChangesToFrontend(Qt3DCore::QAspectManager *manager) if (s->requiresFrontendSync()) { QShaderProgram *frontend = static_cast<decltype(frontend)>(manager->lookupNode(s->peerId())); QShaderProgramPrivate *dFrontend = static_cast<decltype(dFrontend)>(QNodePrivate::get(frontend)); + s->unsetRequiresFrontendSync(); dFrontend->setStatus(s->status()); dFrontend->setLog(s->log()); - s->unsetRequiresFrontendSync(); } } |