summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMike Krus <mike.krus@kdab.com>2020-02-05 10:35:45 +0000
committerMike Krus <mike.krus@kdab.com>2020-02-05 10:35:45 +0000
commitce4824da7739dbe51abd201c78db2e8a8e31b6e9 (patch)
tree15fd7c64f4e9d98786b4b901041143efb6462a23 /src
parentf1f387c22dac8748a7edb1f4aa1ea6dac7dfbdfd (diff)
parentd33c1630b09fcdad83f69bfd2530354584b2f42b (diff)
Merge remote-tracking branch '5.14' into 5.15
Diffstat (limited to 'src')
-rw-r--r--src/logic/executor.cpp4
-rw-r--r--src/logic/qlogicaspect.cpp1
-rw-r--r--src/render/backend/entity.cpp4
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)