summaryrefslogtreecommitdiffstats
path: root/src/render/renderers
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2019-10-11 09:15:12 +0200
committerPaul Lemire <paul.lemire@kdab.com>2019-10-14 20:36:43 +0200
commitda5a4af50076515abbf04691e8a5dfca5daaca9e (patch)
tree2e5a3d07febab846061cc62d0313181087d8fed4 /src/render/renderers
parentf8ab61438164a828e2f0c6e9e4a5cdeaa7b6a62c (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')
-rw-r--r--src/render/renderers/opengl/renderer/renderer.cpp4
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();
}
}