summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/render/frontend/qrenderaspect.cpp8
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