diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2019-09-17 13:42:57 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2019-09-20 14:25:54 +0200 |
commit | c11cc7dfa5b9b0766bd1c42c7b8ba0ab021a68a8 (patch) | |
tree | 2973d0b0be545c5f0b1548b96d8a100e97b1d996 /src/render/framegraph | |
parent | ccc9b1f7c687510950a1c4d0e78bf9a6d5a23fc0 (diff) |
Update QRenderTargetSelector to use direct sync
Change-Id: I893fa8e1ecfe9b9d20ff39ce2e756753fbc70dc3
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Diffstat (limited to 'src/render/framegraph')
-rw-r--r-- | src/render/framegraph/qrendertargetselector.cpp | 8 | ||||
-rw-r--r-- | src/render/framegraph/rendertargetselectornode.cpp | 35 | ||||
-rw-r--r-- | src/render/framegraph/rendertargetselectornode_p.h | 4 |
3 files changed, 17 insertions, 30 deletions
diff --git a/src/render/framegraph/qrendertargetselector.cpp b/src/render/framegraph/qrendertargetselector.cpp index 1b4afc7e6..f4d95d507 100644 --- a/src/render/framegraph/qrendertargetselector.cpp +++ b/src/render/framegraph/qrendertargetselector.cpp @@ -153,13 +153,7 @@ void QRenderTargetSelector::setOutputs(const QVector<QRenderTargetOutput::Attach Q_D(QRenderTargetSelector); if (buffers != d->m_outputs) { d->m_outputs = buffers; - - if (d->m_changeArbiter) { - auto change = QPropertyUpdatedChangePtr::create(d->m_id); - change->setPropertyName("outputs"); - change->setValue(QVariant::fromValue(d->m_outputs)); - d->notifyObservers(change); - } + d->update(); } } diff --git a/src/render/framegraph/rendertargetselectornode.cpp b/src/render/framegraph/rendertargetselectornode.cpp index 615608bd2..871a00154 100644 --- a/src/render/framegraph/rendertargetselectornode.cpp +++ b/src/render/framegraph/rendertargetselectornode.cpp @@ -59,29 +59,24 @@ RenderTargetSelector::RenderTargetSelector() : { } -void RenderTargetSelector::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) +void RenderTargetSelector::syncFromFrontEnd(const QNode *frontEnd, bool firstTime) { - FrameGraphNode::initializeFromPeer(change); - const auto typedChange = qSharedPointerCast<Qt3DCore::QNodeCreatedChange<QRenderTargetSelectorData>>(change); - const auto &data = typedChange->data; - m_renderTargetUuid = data.targetId; - m_outputs = data.outputs; -} + const QRenderTargetSelector *node = qobject_cast<const QRenderTargetSelector *>(frontEnd); + if (!node) + return; -void RenderTargetSelector::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) -{ - qCDebug(Render::Framegraph) << Q_FUNC_INFO; - if (e->type() == PropertyUpdated) { - QPropertyUpdatedChangePtr propertyChange = qSharedPointerCast<QPropertyUpdatedChange>(e); - if (propertyChange->propertyName() == QByteArrayLiteral("target")) { - m_renderTargetUuid = propertyChange->value().value<QNodeId>(); - markDirty(AbstractRenderer::FrameGraphDirty); - } else if (propertyChange->propertyName() == QByteArrayLiteral("outputs")) { - m_outputs = propertyChange->value().value<QVector<Qt3DRender::QRenderTargetOutput::AttachmentPoint> >(); - markDirty(AbstractRenderer::FrameGraphDirty); - } + FrameGraphNode::syncFromFrontEnd(frontEnd, firstTime); + + const QNodeId renderTargetId = qIdForNode(node->target()); + if (renderTargetId != m_renderTargetUuid) { + m_renderTargetUuid = renderTargetId; + markDirty(AbstractRenderer::FrameGraphDirty); + } + + if (node->outputs() != m_outputs) { + m_outputs = node->outputs(); + markDirty(AbstractRenderer::FrameGraphDirty); } - FrameGraphNode::sceneChangeEvent(e); } } // namespace Render diff --git a/src/render/framegraph/rendertargetselectornode_p.h b/src/render/framegraph/rendertargetselectornode_p.h index 81ac8a3d3..232ee9ecc 100644 --- a/src/render/framegraph/rendertargetselectornode_p.h +++ b/src/render/framegraph/rendertargetselectornode_p.h @@ -66,14 +66,12 @@ class RenderTargetSelector : public FrameGraphNode public: RenderTargetSelector(); - void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) override; + void syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime) override; Qt3DCore::QNodeId renderTargetUuid() const { return m_renderTargetUuid; } QVector<QRenderTargetOutput::AttachmentPoint> outputs() const { return m_outputs; } private: - void initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) final; - Qt3DCore::QNodeId m_renderTargetUuid; QVector<QRenderTargetOutput::AttachmentPoint> m_outputs; }; |