From 27c1cee7ed13bce3ee46aca48dadf52680124d7b Mon Sep 17 00:00:00 2001 From: Paul Lemire Date: Mon, 3 May 2021 14:39:18 +0200 Subject: 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 (cherry picked from commit d29f3b277d0f949f2fa0b0e0214e38ec3e790c40) Reviewed-by: Qt Cherry-pick Bot --- src/render/frontend/qrenderaspect.cpp | 9 ++++++--- 1 file 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 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); } -- cgit v1.2.3