summaryrefslogtreecommitdiffstats
path: root/src/render/framegraph/renderpassfilternode.cpp
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2016-04-23 16:15:14 +0100
committerSean Harmer <sean.harmer@kdab.com>2016-04-27 11:18:40 +0000
commit3fc350b9813ad8ca461aac36f16290918a669487 (patch)
tree335f37c337d913e4e3970bb5b2e3e2f6aee4b653 /src/render/framegraph/renderpassfilternode.cpp
parent84bc4eaef7ae8163b82870ea91d3e5268671ef1e (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.cpp37
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);
}