diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2015-10-12 16:59:18 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2015-10-14 18:53:10 +0000 |
commit | 52bcbd19273842c7b46d353a2cc52d3d0229c00d (patch) | |
tree | 7eb094f79bdc645215071b46fd1ea12bba0a32d7 /src/render | |
parent | 6cf4712bda7d3453ddf728f5903374abd2f4efc9 (diff) |
QMaterial: remove NodeAdded/Remove notifications on Effect
Rely on the parent being set for inline declaration and the emit effectChanged
to automatically send notifications.
Updated unit tests accordingly.
Change-Id: I7304309ea248da5e15db3dea4d556162af5e940e
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
Diffstat (limited to 'src/render')
-rw-r--r-- | src/render/materialsystem/material.cpp | 2 | ||||
-rw-r--r-- | src/render/materialsystem/qmaterial.cpp | 20 |
2 files changed, 4 insertions, 18 deletions
diff --git a/src/render/materialsystem/material.cpp b/src/render/materialsystem/material.cpp index faf934d3e..ad7aa0eae 100644 --- a/src/render/materialsystem/material.cpp +++ b/src/render/materialsystem/material.cpp @@ -88,6 +88,8 @@ void Material::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) case NodeUpdated: { if (propertyChange->propertyName() == QByteArrayLiteral("enabled")) m_enabled = propertyChange->value().toBool(); + else if (propertyChange->propertyName() == QByteArrayLiteral("effect")) + m_effectUuid = propertyChange->value().value<QNodeId>(); break; } // Check for shader parameter diff --git a/src/render/materialsystem/qmaterial.cpp b/src/render/materialsystem/qmaterial.cpp index c220b1841..3610c4e3b 100644 --- a/src/render/materialsystem/qmaterial.cpp +++ b/src/render/materialsystem/qmaterial.cpp @@ -113,30 +113,14 @@ void QMaterial::setEffect(QEffect *effect) Q_D(QMaterial); if (effect != d->m_effect) { - if (d->m_effect && d->m_changeArbiter) { - QScenePropertyChangePtr change(new QScenePropertyChange(NodeRemoved, QSceneChange::Node, id())); - change->setPropertyName("effect"); - change->setValue(QVariant::fromValue(d->m_effect->id())); - d->notifyObservers(change); - } - - d->m_effect = effect; - const bool blocked = blockNotifications(true); - emit effectChanged(); - blockNotifications(blocked); // We need to add it as a child of the current node if it has been declared inline // Or not previously added as a child of the current node so that // 1) The backend gets notified about it's creation // 2) When the current node is destroyed, it gets destroyed as well if (effect && !effect->parent()) effect->setParent(this); - - if (d->m_effect && d->m_changeArbiter) { - QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, QSceneChange::Node, id())); - change->setPropertyName("effect"); - change->setValue(QVariant::fromValue(effect->id())); - d->notifyObservers(change); - } + d->m_effect = effect; + emit effectChanged(); } } |