summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2019-10-03 07:51:02 +0200
committerPaul Lemire <paul.lemire@kdab.com>2019-10-03 22:11:14 +0200
commit703f7964f88df116d0dd3fdd0a8005b9abef8737 (patch)
tree0e56c217dac12a1f21603433eb34a3f052a08288
parentea407396b6bd6531e2214b2e1595e4a61037a11c (diff)
Fix in parameters: backend value wasn't reset on cleanup
Lead to a regression where some uniforms wouldn't have the expected value following destruction/reconstruction of the backend Parameter. Change-Id: Id747cb2903f25a4a5cc0c5d479a09805d317f380 Reviewed-by: Mike Krus <mike.krus@kdab.com>
-rw-r--r--src/render/materialsystem/parameter.cpp1
-rw-r--r--src/render/materialsystem/parameter_p.h1
-rw-r--r--tests/auto/render/parameter/tst_parameter.cpp3
3 files changed, 5 insertions, 0 deletions
diff --git a/src/render/materialsystem/parameter.cpp b/src/render/materialsystem/parameter.cpp
index ad84c0413..3360aebef 100644
--- a/src/render/materialsystem/parameter.cpp
+++ b/src/render/materialsystem/parameter.cpp
@@ -67,6 +67,7 @@ void Parameter::cleanup()
m_nameId = -1;
m_name.clear();
m_uniformValue = UniformValue();
+ m_backendValue = {};
}
void Parameter::syncFromFrontEnd(const QNode *frontEnd, bool firstTime)
diff --git a/src/render/materialsystem/parameter_p.h b/src/render/materialsystem/parameter_p.h
index 9deaa11f3..258834ff3 100644
--- a/src/render/materialsystem/parameter_p.h
+++ b/src/render/materialsystem/parameter_p.h
@@ -76,6 +76,7 @@ public:
QString name() const;
int nameId() const Q_DECL_NOTHROW { return m_nameId; }
const UniformValue &uniformValue() const { return m_uniformValue; }
+ QVariant backendValue() const { return m_backendValue; }
private:
QString m_name;
diff --git a/tests/auto/render/parameter/tst_parameter.cpp b/tests/auto/render/parameter/tst_parameter.cpp
index 0bfb306e5..625256fc4 100644
--- a/tests/auto/render/parameter/tst_parameter.cpp
+++ b/tests/auto/render/parameter/tst_parameter.cpp
@@ -52,6 +52,7 @@ private Q_SLOTS:
QCOMPARE(backendParameter.name(), QString());
QCOMPARE(backendParameter.uniformValue(), Qt3DRender::Render::UniformValue());
QCOMPARE(backendParameter.nameId(), -1);
+ QCOMPARE(backendParameter.backendValue(), QVariant());
}
void checkCleanupState()
@@ -73,6 +74,7 @@ private Q_SLOTS:
QCOMPARE(backendParameter.name(), QString());
QCOMPARE(backendParameter.uniformValue(), Qt3DRender::Render::UniformValue());
QCOMPARE(backendParameter.nameId(), -1);
+ QCOMPARE(backendParameter.backendValue(), QVariant());
}
void checkInitializeFromPeer()
@@ -155,6 +157,7 @@ private Q_SLOTS:
// THEN
QCOMPARE(backendParameter.uniformValue(), newValue);
+ QCOMPARE(backendParameter.backendValue(), value);
QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::ParameterDirty);
renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
}