summaryrefslogtreecommitdiffstats
path: root/src/render/backend/rendertarget.cpp
diff options
context:
space:
mode:
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