diff options
author | Sean Harmer <sean.harmer@kdab.com> | 2016-04-24 15:15:46 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2016-04-27 11:19:42 +0000 |
commit | 3ca265e8423d0af7ee5e2e793e707f669a281d94 (patch) | |
tree | a4ae0f44baafda209826f91e9a205d0a0c1abe2c /src/render/materialsystem/qtechnique.cpp | |
parent | 69efa162f9ac0659814968512604afde4419aa27 (diff) |
Technique use new added/removed change types
The API filter still uses cloning. We need to find a way to avoid this.
Either create a backend type or we could replace it with a Q_GADGET
and set the baclend values when the whole thing changes (rare).
Change-Id: I0039a3a374328b63dbcf2e618193fb2ea49b1b83
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/materialsystem/qtechnique.cpp')
-rw-r--r-- | src/render/materialsystem/qtechnique.cpp | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/src/render/materialsystem/qtechnique.cpp b/src/render/materialsystem/qtechnique.cpp index 42233878c..659350a2f 100644 --- a/src/render/materialsystem/qtechnique.cpp +++ b/src/render/materialsystem/qtechnique.cpp @@ -42,7 +42,8 @@ #include "qparameter.h" #include "qgraphicsapifilter.h" #include <Qt3DCore/qnodepropertychange.h> -#include <QDebug> +#include <Qt3DCore/qnodeaddedpropertychange.h> +#include <Qt3DCore/qnoderemovedpropertychange.h> QT_BEGIN_NAMESPACE @@ -99,38 +100,38 @@ void QTechniquePrivate::_q_graphicsApiFilterChanged() } } -void QTechnique::addFilterKey(QFilterKey *criterion) +void QTechnique::addFilterKey(QFilterKey *filterKey) { + Q_ASSERT(filterKey); Q_D(QTechnique); - if (!d->m_filterKeys.contains(criterion)) { - d->m_filterKeys.append(criterion); + if (!d->m_filterKeys.contains(filterKey)) { + d->m_filterKeys.append(filterKey); // 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 (!criterion->parent()) - criterion->setParent(this); + if (!filterKey->parent()) + filterKey->setParent(this); if (d->m_changeArbiter != Q_NULLPTR) { - QNodePropertyChangePtr change(new QNodePropertyChange(NodeAdded, QSceneChange::Node, id())); + const auto change = QNodeAddedPropertyChangePtr::create(id(), filterKey->id()); change->setPropertyName("filterKeys"); - change->setValue(QVariant::fromValue(criterion->id())); d->notifyObservers(change); } } } -void QTechnique::removeFilterKey(QFilterKey *criterion) +void QTechnique::removeFilterKey(QFilterKey *filterKey) { + Q_ASSERT(filterKey); Q_D(QTechnique); if (d->m_changeArbiter != Q_NULLPTR) { - QNodePropertyChangePtr change(new QNodePropertyChange(NodeRemoved, QSceneChange::Node, id())); + const auto change = QNodeRemovedPropertyChangePtr::create(id(), filterKey->id()); change->setPropertyName("filterKeys"); - change->setValue(QVariant::fromValue(criterion->id())); d->notifyObservers(change); } - d->m_filterKeys.removeOne(criterion); + d->m_filterKeys.removeOne(filterKey); } QVector<QFilterKey *> QTechnique::filterKeys() const @@ -141,6 +142,7 @@ QVector<QFilterKey *> QTechnique::filterKeys() const void QTechnique::addParameter(QParameter *parameter) { + Q_ASSERT(parameter); Q_D(QTechnique); if (!d->m_parameters.contains(parameter)) { d->m_parameters.append(parameter); @@ -153,9 +155,8 @@ void QTechnique::addParameter(QParameter *parameter) parameter->setParent(this); if (d->m_changeArbiter != Q_NULLPTR) { - QNodePropertyChangePtr change(new QNodePropertyChange(NodeAdded, QSceneChange::Node, id())); + const auto change = QNodeAddedPropertyChangePtr::create(id(), parameter->id()); change->setPropertyName("parameter"); - change->setValue(QVariant::fromValue(parameter->id())); d->notifyObservers(change); } } @@ -163,12 +164,11 @@ void QTechnique::addParameter(QParameter *parameter) void QTechnique::removeParameter(QParameter *parameter) { + Q_ASSERT(parameter); Q_D(QTechnique); - if (d->m_changeArbiter != Q_NULLPTR) { - QNodePropertyChangePtr change(new QNodePropertyChange(NodeRemoved, QSceneChange::Node, id())); + const auto change = QNodeAddedPropertyChangePtr::create(id(), parameter->id()); change->setPropertyName("parameter"); - change->setValue(QVariant::fromValue(parameter->id())); d->notifyObservers(change); } d->m_parameters.removeOne(parameter); @@ -181,6 +181,7 @@ void QTechnique::removeParameter(QParameter *parameter) */ void QTechnique::addRenderPass(QRenderPass *pass) { + Q_ASSERT(pass); Q_D(QTechnique); if (!d->m_renderPasses.contains(pass)) { d->m_renderPasses.append(pass); @@ -193,10 +194,9 @@ void QTechnique::addRenderPass(QRenderPass *pass) pass->setParent(this); if (d->m_changeArbiter != Q_NULLPTR) { - QNodePropertyChangePtr e(new QNodePropertyChange(NodeAdded, QSceneChange::Node, id())); - e->setPropertyName("pass"); - e->setValue(QVariant::fromValue(pass->id())); - d->notifyObservers(e); + const auto change = QNodeAddedPropertyChangePtr::create(id(), pass->id()); + change->setPropertyName("pass"); + d->notifyObservers(change); } } } @@ -208,12 +208,12 @@ void QTechnique::addRenderPass(QRenderPass *pass) */ void QTechnique::removeRenderPass(QRenderPass *pass) { + Q_ASSERT(pass); Q_D(QTechnique); if (d->m_changeArbiter) { - QNodePropertyChangePtr e(new QNodePropertyChange(NodeRemoved, QSceneChange::Node, id())); - e->setPropertyName("pass"); - e->setValue(QVariant::fromValue(pass->id())); - d->notifyObservers(e); + const auto change = QNodeAddedPropertyChangePtr::create(id(), pass->id()); + change->setPropertyName("pass"); + d->notifyObservers(change); } d->m_renderPasses.removeOne(pass); } |