summaryrefslogtreecommitdiffstats
path: root/src/render/materialsystem
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2015-10-12 16:59:18 +0200
committerPaul Lemire <paul.lemire@kdab.com>2015-10-14 18:53:10 +0000
commit52bcbd19273842c7b46d353a2cc52d3d0229c00d (patch)
tree7eb094f79bdc645215071b46fd1ea12bba0a32d7 /src/render/materialsystem
parent6cf4712bda7d3453ddf728f5903374abd2f4efc9 (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/materialsystem')
-rw-r--r--src/render/materialsystem/material.cpp2
-rw-r--r--src/render/materialsystem/qmaterial.cpp20
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();
}
}