diff options
author | Mike Krus <mike.krus@kdab.com> | 2020-02-05 10:35:45 +0000 |
---|---|---|
committer | Mike Krus <mike.krus@kdab.com> | 2020-02-05 10:35:45 +0000 |
commit | ce4824da7739dbe51abd201c78db2e8a8e31b6e9 (patch) | |
tree | 15fd7c64f4e9d98786b4b901041143efb6462a23 /src | |
parent | f1f387c22dac8748a7edb1f4aa1ea6dac7dfbdfd (diff) | |
parent | d33c1630b09fcdad83f69bfd2530354584b2f42b (diff) |
Merge remote-tracking branch '5.14' into 5.15
Change-Id: I76b7e29d240b89e27ef509b30cc3cd622f281fc9
Diffstat (limited to 'src')
-rw-r--r-- | src/logic/executor.cpp | 4 | ||||
-rw-r--r-- | src/logic/qlogicaspect.cpp | 1 | ||||
-rw-r--r-- | src/render/backend/entity.cpp | 4 |
3 files changed, 8 insertions, 1 deletions
diff --git a/src/logic/executor.cpp b/src/logic/executor.cpp index 1c428db47..41d2f2e31 100644 --- a/src/logic/executor.cpp +++ b/src/logic/executor.cpp @@ -89,7 +89,9 @@ bool Executor::event(QEvent *e) */ void Executor::processLogicFrameUpdates(float dt) { - Q_ASSERT(m_scene); + if (!m_scene || m_nodeIds.isEmpty()) + return; + const QVector<QNode *> nodes = m_scene->lookupNodes(m_nodeIds); for (QNode *node : nodes) { QFrameAction *frameAction = qobject_cast<QFrameAction *>(node); diff --git a/src/logic/qlogicaspect.cpp b/src/logic/qlogicaspect.cpp index 649a14f25..c4459a84d 100644 --- a/src/logic/qlogicaspect.cpp +++ b/src/logic/qlogicaspect.cpp @@ -84,6 +84,7 @@ void QLogicAspectPrivate::onEngineAboutToShutdown() // Throw away any pending work that may deadlock during the shutdown procedure // when the main thread waits for any queued jobs to finish. m_executor->clearQueueAndProceed(); + m_executor->setScene(nullptr); } void QLogicAspectPrivate::registerBackendTypes() diff --git a/src/render/backend/entity.cpp b/src/render/backend/entity.cpp index 682dc000e..d766baaaf 100644 --- a/src/render/backend/entity.cpp +++ b/src/render/backend/entity.cpp @@ -156,6 +156,10 @@ void Entity::cleanup() m_parentHandle = {}; m_boundingDirty = false; QBackendNode::setEnabled(false); + + // Ensure we rebuild caches when an Entity gets cleaned up + if (m_renderer) + markDirty(AbstractRenderer::AllDirty); } void Entity::setParentHandle(HEntity parentHandle) |