diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2019-10-03 07:51:02 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2019-10-03 22:11:14 +0200 |
commit | 703f7964f88df116d0dd3fdd0a8005b9abef8737 (patch) | |
tree | 0e56c217dac12a1f21603433eb34a3f052a08288 | |
parent | ea407396b6bd6531e2214b2e1595e4a61037a11c (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.cpp | 1 | ||||
-rw-r--r-- | src/render/materialsystem/parameter_p.h | 1 | ||||
-rw-r--r-- | tests/auto/render/parameter/tst_parameter.cpp | 3 |
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); } |