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-06 13:02:18 +0000 |
commit | bb7b5983d599ee1c40c6658ab726efa2ac3d3f2c (patch) | |
tree | c7063144be115cfa925873651f8b3321c5d4cb3f /src | |
parent | a054e92ba05a32d13b91908597618b43709c5f68 (diff) | |
parent | ce4824da7739dbe51abd201c78db2e8a8e31b6e9 (diff) |
Merge "Merge remote-tracking branch '5.14' into 5.15"
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) |