summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2021-05-03 14:39:18 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-07-09 12:31:18 +0000
commit1d899fc923a71d9278dfc448e145a84f1a938633 (patch)
treecdfbb02053e99ba4a5b5c03517c6a0ed44c971f8
parent8239210b245c6f3b4dd39fb2360614d78489ce7a (diff)
Rerun bounding volume update jobs when entity enabled property changes
Otherwise, this results in the bounding volume being out of sync with entities (an entity initially disabled that gets enabled would have an empty bounding volume) until some other events in the scene triggers a rebuild. Task-number: QTBUG-93035 Change-Id: Ia21eec0eb5601169e1789321080803a5aed12e82 Reviewed-by: Mike Krus <mike.krus@kdab.com> (cherry picked from commit d29f3b277d0f949f2fa0b0e0214e38ec3e790c40) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/render/frontend/qrenderaspect.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/render/frontend/qrenderaspect.cpp b/src/render/frontend/qrenderaspect.cpp
index 13587fda6..609ba433a 100644
--- a/src/render/frontend/qrenderaspect.cpp
+++ b/src/render/frontend/qrenderaspect.cpp
@@ -724,17 +724,20 @@ std::vector<Qt3DCore::QAspectJobPtr> QRenderAspect::jobsToExecute(qint64 time)
if (entitiesEnabledDirty)
jobs.push_back(d->m_updateTreeEnabledJob);
- if (dirtyBitsForFrame & AbstractRenderer::TransformDirty) {
+ if (entitiesEnabledDirty ||
+ dirtyBitsForFrame & AbstractRenderer::TransformDirty) {
jobs.push_back(d->m_worldTransformJob);
jobs.push_back(d->m_updateWorldBoundingVolumeJob);
}
- if (dirtyBitsForFrame & AbstractRenderer::GeometryDirty ||
+ if (entitiesEnabledDirty ||
+ dirtyBitsForFrame & AbstractRenderer::GeometryDirty ||
dirtyBitsForFrame & AbstractRenderer::BuffersDirty) {
jobs.push_back(d->m_calculateBoundingVolumeJob);
}
- if (dirtyBitsForFrame & AbstractRenderer::GeometryDirty ||
+ if (entitiesEnabledDirty ||
+ dirtyBitsForFrame & AbstractRenderer::GeometryDirty ||
dirtyBitsForFrame & AbstractRenderer::TransformDirty) {
jobs.push_back(d->m_expandBoundingVolumeJob);
}