summaryrefslogtreecommitdiffstats
path: root/src/render/backend/rendertarget.cpp
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2019-09-18 12:28:25 +0200
committerPaul Lemire <paul.lemire@kdab.com>2019-09-25 11:40:16 +0200
commit6370b00fc647f4c064f5c83cda8f0a5fb82a7fbf (patch)
tree9e185130334cb9089cd16c74d5e76e7e6366da1d /src/render/backend/rendertarget.cpp
parent26ae3af8b1bcadf608b24160601eb0d772bd20ce (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.cpp45
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