summaryrefslogtreecommitdiffstats
path: root/src/render/materialsystem
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2019-09-19 10:23:48 +0200
committerPaul Lemire <paul.lemire@kdab.com>2019-09-25 15:37:22 +0200
commit29dc5ced83b9d992ca533711d25ab31ebe984ee4 (patch)
tree22f7aa93d5246ab82ce935fdf8c361cd36a4abc7 /src/render/materialsystem
parentc718f6c7c9354f897c210ba74a8d8887762648f3 (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.cpp28
-rw-r--r--src/render/materialsystem/filterkey_p.h4
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;
};