diff options
author | Sean Harmer <sean.harmer@kdab.com> | 2016-04-23 16:15:14 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2016-04-27 11:18:40 +0000 |
commit | 3fc350b9813ad8ca461aac36f16290918a669487 (patch) | |
tree | 335f37c337d913e4e3970bb5b2e3e2f6aee4b653 /src/render/framegraph/renderpassfilternode.cpp | |
parent | 84bc4eaef7ae8163b82870ea91d3e5268671ef1e (diff) |
RenderPassFilter use new added/removed change types
Also fix property name in backend class and only mark dirty if
something actually changes.
Change-Id: If992d9323415b0c63283bc943b03c6e92aedcedc
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/framegraph/renderpassfilternode.cpp')
-rw-r--r-- | src/render/framegraph/renderpassfilternode.cpp | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/src/render/framegraph/renderpassfilternode.cpp b/src/render/framegraph/renderpassfilternode.cpp index 9ad28e0bd..32a478cee 100644 --- a/src/render/framegraph/renderpassfilternode.cpp +++ b/src/render/framegraph/renderpassfilternode.cpp @@ -41,8 +41,10 @@ #include "qfilterkey.h" #include "qrenderpassfilter.h" #include <Qt3DRender/private/qrenderpassfilter_p.h> -#include <Qt3DCore/qnodepropertychange.h> #include <Qt3DRender/qparameter.h> +#include <Qt3DCore/qnodepropertychange.h> +#include <Qt3DCore/qnodeaddedpropertychange.h> +#include <Qt3DCore/qnoderemovedpropertychange.h> QT_BEGIN_NAMESPACE @@ -101,28 +103,35 @@ QVector<Qt3DCore::QNodeId> RenderPassFilter::parameters() const void RenderPassFilter::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) { - QNodePropertyChangePtr propertyChange = qSharedPointerCast<QNodePropertyChange>(e); switch (e->type()) { - case NodeAdded: { - if (propertyChange->propertyName() == QByteArrayLiteral("include")) - appendFilter(propertyChange->value().value<QNodeId>()); - else if (propertyChange->propertyName() == QByteArrayLiteral("parameter")) - m_parameterPack.appendParameter(propertyChange->value().value<QNodeId>()); - } + const auto change = qSharedPointerCast<QNodeAddedPropertyChange>(e); + if (change->propertyName() == QByteArrayLiteral("match")) { + appendFilter(change->addedNodeId()); + markDirty(AbstractRenderer::AllDirty); + } else if (change->propertyName() == QByteArrayLiteral("parameter")) { + m_parameterPack.appendParameter(change->addedNodeId()); + markDirty(AbstractRenderer::AllDirty); + } break; - case NodeRemoved: { - if (propertyChange->propertyName() == QByteArrayLiteral("include")) - removeFilter(propertyChange->value().value<QNodeId>()); - else if (propertyChange->propertyName() == QByteArrayLiteral("parameter")) - m_parameterPack.removeParameter(propertyChange->value().value<QNodeId>()); } + + case NodeRemoved: { + const auto change = qSharedPointerCast<QNodeRemovedPropertyChange>(e); + if (change->propertyName() == QByteArrayLiteral("match")) { + removeFilter(change->removedNodeId()); + markDirty(AbstractRenderer::AllDirty); + } else if (change->propertyName() == QByteArrayLiteral("parameter")) { + m_parameterPack.removeParameter(change->removedNodeId()); + markDirty(AbstractRenderer::AllDirty); + } break; + } + default: break; } - markDirty(AbstractRenderer::AllDirty); FrameGraphNode::sceneChangeEvent(e); } |