diff options
author | Mike Krus <mike.krus@kdab.com> | 2019-09-06 14:37:46 +0100 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2019-09-18 19:28:35 +0200 |
commit | d09e9d24bfcbee260d7adc8ab1ecfb6ca4713584 (patch) | |
tree | e99beb0ed6238cf37513ebb525943a8a060d9d5f /src/render/lights | |
parent | dedde9f70664e5d721edb92308d4452a2c9685f5 (diff) |
Update QAbstractLight to use direct sync
Change-Id: I5efde51f6cadd5e4b6faa28e8b97e2cf2e14706f
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Diffstat (limited to 'src/render/lights')
-rw-r--r-- | src/render/lights/light.cpp | 16 | ||||
-rw-r--r-- | src/render/lights/light_p.h | 4 |
2 files changed, 12 insertions, 8 deletions
diff --git a/src/render/lights/light.cpp b/src/render/lights/light.cpp index e8474b728..30d71082b 100644 --- a/src/render/lights/light.cpp +++ b/src/render/lights/light.cpp @@ -58,14 +58,18 @@ QNodeId Light::shaderData() const return m_shaderDataId; } -void Light::initializeFromPeer(const QNodeCreatedChangeBasePtr &change) +void Light::syncFromFrontEnd(const QNode *frontEnd, bool firstTime) { - const auto typedChange = qSharedPointerCast<Qt3DCore::QNodeCreatedChange<QAbstractLightData>>(change); - const auto &data = typedChange->data; - m_shaderDataId = data.shaderDataId; + BackendNode::syncFromFrontEnd(frontEnd, firstTime); + const QAbstractLight *node = qobject_cast<const QAbstractLight *>(frontEnd); + if (!node) + return; - Q_ASSERT(m_renderer); - BackendNode::markDirty(AbstractRenderer::LightsDirty); + if (firstTime) { + QAbstractLightPrivate *d = static_cast<QAbstractLightPrivate *>(QAbstractLightPrivate::get(const_cast<Qt3DCore::QNode *>(frontEnd))); + m_shaderDataId = d->m_shaderData ? d->m_shaderData->id() : QNodeId{}; + BackendNode::markDirty(AbstractRenderer::LightsDirty); + } } RenderLightFunctor::RenderLightFunctor(AbstractRenderer *renderer, NodeManagers *managers) diff --git a/src/render/lights/light_p.h b/src/render/lights/light_p.h index 8ecc87585..5f5f8140e 100644 --- a/src/render/lights/light_p.h +++ b/src/render/lights/light_p.h @@ -66,9 +66,9 @@ class Q_AUTOTEST_EXPORT Light : public BackendNode public: Qt3DCore::QNodeId shaderData() const; -private: - void initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) final; + void syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime) override; +private: Qt3DCore::QNodeId m_shaderDataId; }; |