summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2019-09-18 11:09:58 +0200
committerPaul Lemire <paul.lemire@kdab.com>2019-09-25 09:32:33 +0200
commitfc32576389478022355b36a395b733be7f2efa76 (patch)
treee378db2855156ca153cfc0f1572865f5b4b2147e
parent3ad357371468c0da04b2964f040da41506379178 (diff)
Update QLayer to use direct sync
Change-Id: Iadcbc7f2262acdaea7ac78d568e764f4f193ea58 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
-rw-r--r--src/render/backend/layer.cpp33
-rw-r--r--src/render/backend/layer_p.h4
-rw-r--r--src/render/frontend/qrenderaspect.cpp2
3 files changed, 16 insertions, 23 deletions
diff --git a/src/render/backend/layer.cpp b/src/render/backend/layer.cpp
index 24ec284fc..f0c844906 100644
--- a/src/render/backend/layer.cpp
+++ b/src/render/backend/layer.cpp
@@ -67,27 +67,22 @@ void Layer::cleanup()
QBackendNode::setEnabled(false);
}
-void Layer::sceneChangeEvent(const QSceneChangePtr &e)
+void Layer::syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime)
{
- if (e->type() == PropertyUpdated) {
- QPropertyUpdatedChangePtr propertyChange = qSharedPointerCast<QPropertyUpdatedChange>(e);
- QByteArray propertyName = propertyChange->propertyName();
- if (propertyName == QByteArrayLiteral("recursive")) {
- m_recursive = propertyChange->value().toBool();
- markDirty(AbstractRenderer::LayersDirty);
- }
- if (propertyName == QByteArrayLiteral("enabled"))
- markDirty(AbstractRenderer::LayersDirty);
- }
- BackendNode::sceneChangeEvent(e);
-}
+ const QLayer *node = qobject_cast<const QLayer *>(frontEnd);
+ if (!node)
+ return;
-void Layer::initializeFromPeer(const QNodeCreatedChangeBasePtr &change)
-{
- const auto typedChange = qSharedPointerCast<Qt3DCore::QNodeCreatedChange<QLayerData>>(change);
- const auto &data = typedChange->data;
- m_recursive = data.m_recursive;
- markDirty(AbstractRenderer::LayersDirty);
+ const bool oldEnabled = isEnabled();
+ BackendNode::syncFromFrontEnd(frontEnd, firstTime);
+
+ if (isEnabled() != oldEnabled || firstTime)
+ markDirty(AbstractRenderer::LayersDirty);
+
+ if (node->recursive() != m_recursive) {
+ m_recursive = node->recursive();
+ markDirty(AbstractRenderer::LayersDirty);
+ }
}
bool Layer::recursive() const
diff --git a/src/render/backend/layer_p.h b/src/render/backend/layer_p.h
index 1513157f9..8631e2d92 100644
--- a/src/render/backend/layer_p.h
+++ b/src/render/backend/layer_p.h
@@ -76,11 +76,9 @@ public:
bool recursive() const;
void setRecursive(bool recursive);
-protected:
- void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) override;
+ void syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime) override;
private:
- void initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) override;
bool m_recursive;
};
diff --git a/src/render/frontend/qrenderaspect.cpp b/src/render/frontend/qrenderaspect.cpp
index 08a85368f..da775ce49 100644
--- a/src/render/frontend/qrenderaspect.cpp
+++ b/src/render/frontend/qrenderaspect.cpp
@@ -256,7 +256,7 @@ void QRenderAspectPrivate::registerBackendTypes()
q->registerBackendType<Qt3DCore::QTransform, true>(QSharedPointer<Render::NodeFunctor<Render::Transform, Render::TransformManager> >::create(m_renderer));
q->registerBackendType<Qt3DRender::QCameraLens, true>(QSharedPointer<Render::CameraLensFunctor>::create(m_renderer, q));
- q->registerBackendType<QLayer>(QSharedPointer<Render::NodeFunctor<Render::Layer, Render::LayerManager> >::create(m_renderer));
+ q->registerBackendType<QLayer, true>(QSharedPointer<Render::NodeFunctor<Render::Layer, Render::LayerManager> >::create(m_renderer));
q->registerBackendType<QLevelOfDetail>(QSharedPointer<Render::NodeFunctor<Render::LevelOfDetail, Render::LevelOfDetailManager> >::create(m_renderer));
q->registerBackendType<QLevelOfDetailSwitch>(QSharedPointer<Render::NodeFunctor<Render::LevelOfDetail, Render::LevelOfDetailManager> >::create(m_renderer));
q->registerBackendType<QSceneLoader>(QSharedPointer<Render::RenderSceneFunctor>::create(m_renderer, m_nodeManagers->sceneManager()));