summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/render/materialsystem/shaderbuilder.cpp1
-rw-r--r--src/render/materialsystem/shaderbuilder_p.h2
-rw-r--r--src/render/renderers/opengl/renderer/renderer.cpp4
3 files changed, 4 insertions, 3 deletions
diff --git a/src/render/materialsystem/shaderbuilder.cpp b/src/render/materialsystem/shaderbuilder.cpp
index 4e9327003..23f1400c9 100644
--- a/src/render/materialsystem/shaderbuilder.cpp
+++ b/src/render/materialsystem/shaderbuilder.cpp
@@ -145,6 +145,7 @@ void ShaderBuilder::cleanup()
m_enabledLayers.clear();
m_graphs.clear();
m_dirtyTypes.clear();
+ m_pendingUpdates.clear();
QBackendNode::setEnabled(false);
}
diff --git a/src/render/materialsystem/shaderbuilder_p.h b/src/render/materialsystem/shaderbuilder_p.h
index ac7a165b8..0a799afaa 100644
--- a/src/render/materialsystem/shaderbuilder_p.h
+++ b/src/render/materialsystem/shaderbuilder_p.h
@@ -95,7 +95,7 @@ public:
void syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime) override;
- QVector<ShaderBuilderUpdate> &updates() { return m_pendingUpdates; }
+ QVector<ShaderBuilderUpdate> takePendingUpdates() { return std::move(m_pendingUpdates); }
private:
void setEnabledLayers(const QStringList &layers);
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();
}
}