diff options
Diffstat (limited to 'src/render/frontend')
-rw-r--r-- | src/render/frontend/qrenderaspect.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/render/frontend/qrenderaspect.cpp b/src/render/frontend/qrenderaspect.cpp index 6c18531d0..a35513d9a 100644 --- a/src/render/frontend/qrenderaspect.cpp +++ b/src/render/frontend/qrenderaspect.cpp @@ -367,7 +367,10 @@ QVector<Qt3DCore::QAspectJobPtr> QRenderAspect::jobsToExecute(qint64 time) jobs.append(triangleComputeJob); } - pickBoundingVolumeJob->addDependency(d->m_updateBoundingVolumeJob); + // Only add dependency if not already present + QVector<QWeakPointer<QAspectJob> > dependencies = pickBoundingVolumeJob->dependencies(); + if (std::find(dependencies.begin(), dependencies.end(), d->m_updateBoundingVolumeJob) == dependencies.end()) + pickBoundingVolumeJob->addDependency(d->m_updateBoundingVolumeJob); // Add all jobs to queue jobs.append(d->m_calculateBoundingVolumeJob); @@ -376,6 +379,9 @@ QVector<Qt3DCore::QAspectJobPtr> QRenderAspect::jobsToExecute(qint64 time) jobs.append(d->m_framePreparationJob); jobs.append(pickBoundingVolumeJob); + // Clear any old dependencies from previous frames + d->m_cleanupJob->removeDependency(QWeakPointer<QAspectJob>()); + // Do not create any more RenderView jobs when the platform surface is gone. if (d->m_renderer->surface()) { // Traverse the current framegraph and create jobs to populate |