diff options
Diffstat (limited to 'src/render/frontend/qrenderaspect.cpp')
-rw-r--r-- | src/render/frontend/qrenderaspect.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/render/frontend/qrenderaspect.cpp b/src/render/frontend/qrenderaspect.cpp index dab3b8c8f..13587fda6 100644 --- a/src/render/frontend/qrenderaspect.cpp +++ b/src/render/frontend/qrenderaspect.cpp @@ -183,6 +183,7 @@ #include <Qt3DCore/private/qentity_p.h> #include <Qt3DCore/private/qaspectmanager_p.h> #include <Qt3DCore/private/qeventfilterservice_p.h> +#include <Qt3DCore/private/calcboundingvolumejob_p.h> #include <QThread> #include <QOpenGLContext> @@ -402,6 +403,20 @@ void QRenderAspectPrivate::onEngineStartup() auto *coreAspect = qobject_cast<Qt3DCore::QCoreAspect *>(m_aspectManager->aspect(&Qt3DCore::QCoreAspect::staticMetaObject)); Q_ASSERT(coreAspect); m_calculateBoundingVolumeJob->addDependency(coreAspect->calculateBoundingVolumeJob()); + + auto bvJob = qSharedPointerCast<Qt3DCore::CalculateBoundingVolumeJob>(coreAspect->calculateBoundingVolumeJob()); + bvJob->addWatcher(m_calculateBoundingVolumeJob); + } +} + +void QRenderAspectPrivate::onEngineAboutToShutdown() +{ + if (m_aspectManager) { + auto *coreAspect = qobject_cast<Qt3DCore::QCoreAspect *>(m_aspectManager->aspect(&Qt3DCore::QCoreAspect::staticMetaObject)); + Q_ASSERT(coreAspect); + + auto bvJob = qSharedPointerCast<Qt3DCore::CalculateBoundingVolumeJob>(coreAspect->calculateBoundingVolumeJob()); + bvJob->removeWatcher(m_calculateBoundingVolumeJob); } } |