diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2019-09-18 11:09:58 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2019-09-25 09:32:33 +0200 |
commit | fc32576389478022355b36a395b733be7f2efa76 (patch) | |
tree | e378db2855156ca153cfc0f1572865f5b4b2147e | |
parent | 3ad357371468c0da04b2964f040da41506379178 (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.cpp | 33 | ||||
-rw-r--r-- | src/render/backend/layer_p.h | 4 | ||||
-rw-r--r-- | src/render/frontend/qrenderaspect.cpp | 2 |
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())); |