diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2019-09-19 10:23:48 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2019-09-25 15:37:22 +0200 |
commit | 29dc5ced83b9d992ca533711d25ab31ebe984ee4 (patch) | |
tree | 22f7aa93d5246ab82ce935fdf8c361cd36a4abc7 /src/render/materialsystem | |
parent | c718f6c7c9354f897c210ba74a8d8887762648f3 (diff) |
Update QFilterKey to use direct sync
Change-Id: Ibeaa98c6aeb3180a233fba0d65e62c3076802833
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Diffstat (limited to 'src/render/materialsystem')
-rw-r--r-- | src/render/materialsystem/filterkey.cpp | 28 | ||||
-rw-r--r-- | src/render/materialsystem/filterkey_p.h | 4 |
2 files changed, 11 insertions, 21 deletions
diff --git a/src/render/materialsystem/filterkey.cpp b/src/render/materialsystem/filterkey.cpp index 167413451..d51a06eec 100644 --- a/src/render/materialsystem/filterkey.cpp +++ b/src/render/materialsystem/filterkey.cpp @@ -65,31 +65,23 @@ void FilterKey::cleanup() m_value.clear(); } -void FilterKey::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) +void FilterKey::syncFromFrontEnd(const QNode *frontEnd, bool firstTime) { - const auto typedChange = qSharedPointerCast<Qt3DCore::QNodeCreatedChange<QFilterKeyData>>(change); - const auto &data = typedChange->data; - m_name = data.name; - m_value = data.value; -} + const QFilterKey *node = qobject_cast<const QFilterKey *>(frontEnd); + if (!node) + return; -void FilterKey::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) -{ - switch (e->type()) { - case PropertyUpdated: { - QPropertyUpdatedChangePtr propertyChange = qSharedPointerCast<QPropertyUpdatedChange>(e); - if (propertyChange->propertyName() == QByteArrayLiteral("value")) - m_value = propertyChange->value(); - else if (propertyChange->propertyName() == QByteArrayLiteral("name")) - m_name = propertyChange->value().toString(); + BackendNode::syncFromFrontEnd(frontEnd, firstTime); + if (node->name() != m_name) { + m_name = node->name(); markDirty(AbstractRenderer::AllDirty); } - default: - break; + if (node->value() != m_value) { + m_value = node->value(); + markDirty(AbstractRenderer::AllDirty); } - BackendNode::sceneChangeEvent(e); } bool FilterKey::operator ==(const FilterKey &other) diff --git a/src/render/materialsystem/filterkey_p.h b/src/render/materialsystem/filterkey_p.h index 69d298503..f4fb2c3d0 100644 --- a/src/render/materialsystem/filterkey_p.h +++ b/src/render/materialsystem/filterkey_p.h @@ -71,13 +71,11 @@ public: const QVariant &value() const { return m_value; } const QString &name() const { return m_name; } - void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) override; + void syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime) override; bool operator ==(const FilterKey &other); bool operator !=(const FilterKey &other); private: - void initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) final; - QVariant m_value; QString m_name; }; |