diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2019-09-18 12:28:25 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2019-09-25 11:40:16 +0200 |
commit | 6370b00fc647f4c064f5c83cda8f0a5fb82a7fbf (patch) | |
tree | 9e185130334cb9089cd16c74d5e76e7e6366da1d /src/render/backend/rendertarget.cpp | |
parent | 26ae3af8b1bcadf608b24160601eb0d772bd20ce (diff) |
Update QRenderTarget to use direct sync
Change-Id: Ie0261d21c63f2df798b1eb82aae05fb3440f71e5
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/backend/rendertarget.cpp')
-rw-r--r-- | src/render/backend/rendertarget.cpp | 45 |
1 files changed, 14 insertions, 31 deletions
diff --git a/src/render/backend/rendertarget.cpp b/src/render/backend/rendertarget.cpp index b0565a26b..206f64e4e 100644 --- a/src/render/backend/rendertarget.cpp +++ b/src/render/backend/rendertarget.cpp @@ -58,11 +58,21 @@ RenderTarget::RenderTarget() { } -void RenderTarget::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) +void RenderTarget::syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime) { - const auto typedChange = qSharedPointerCast<Qt3DCore::QNodeCreatedChange<QRenderTargetData>>(change); - const auto &data = typedChange->data; - m_renderOutputs = data.outputIds; + const QRenderTarget *node = qobject_cast<const QRenderTarget *>(frontEnd); + if (!node) + return; + + BackendNode::syncFromFrontEnd(frontEnd, firstTime); + + auto outputIds = qIdsForNodes(node->outputs()); + std::sort(std::begin(outputIds), std::end(outputIds)); + + if (m_renderOutputs != outputIds) { + m_renderOutputs = outputIds; + markDirty(AbstractRenderer::AllDirty); + } } void RenderTarget::cleanup() @@ -87,33 +97,6 @@ QVector<Qt3DCore::QNodeId> RenderTarget::renderOutputs() const return m_renderOutputs; } -void RenderTarget::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) -{ - switch (e->type()) { - case Qt3DCore::PropertyValueAdded: { - const auto change = qSharedPointerCast<QPropertyNodeAddedChange>(e); - if (change->propertyName() == QByteArrayLiteral("output")) { - appendRenderOutput(change->addedNodeId()); - markDirty(AbstractRenderer::AllDirty); - } - break; - } - - case Qt3DCore::PropertyValueRemoved: { - const auto change = qSharedPointerCast<QPropertyNodeRemovedChange>(e); - if (change->propertyName() == QByteArrayLiteral("output")) { - removeRenderOutput(change->removedNodeId()); - markDirty(AbstractRenderer::AllDirty); - } - break; - } - - default: - break; - } - BackendNode::sceneChangeEvent(e); -} - } // namespace Render } // namespace Qt3DRender |