From 703f7964f88df116d0dd3fdd0a8005b9abef8737 Mon Sep 17 00:00:00 2001 From: Paul Lemire Date: Thu, 3 Oct 2019 07:51:02 +0200 Subject: 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 --- src/render/materialsystem/parameter.cpp | 1 + src/render/materialsystem/parameter_p.h | 1 + tests/auto/render/parameter/tst_parameter.cpp | 3 +++ 3 files changed, 5 insertions(+) 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); } -- cgit v1.2.3