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-06 13:02:18 +0000
commitbb7b5983d599ee1c40c6658ab726efa2ac3d3f2c (patch)
treec7063144be115cfa925873651f8b3321c5d4cb3f /src
parenta054e92ba05a32d13b91908597618b43709c5f68 (diff)
parentce4824da7739dbe51abd201c78db2e8a8e31b6e9 (diff)
Merge "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)