diff options
author | Kevin Ottens <kevin.ottens@kdab.com> | 2015-12-14 18:33:39 +0100 |
---|---|---|
committer | Kevin Ottens <kevin.ottens@kdab.com> | 2015-12-16 13:54:27 +0000 |
commit | edb8095b8c9a9d86f6b6abccf5d4d821470a5154 (patch) | |
tree | 368e6868ed34a166d96e3e31c36be4070c31f808 | |
parent | c10370585b6228c3564a22f22ec60ee24c9fe9f1 (diff) |
Change the idiom to clear null job dependencies
The "clearNull" method is kind of surprising so make QAspectJob API more
usual. Also the "clearNull" method was only used twice so change the
idiom to go through removeDependency if that one receives a null
pointer.
Change-Id: Ib74e1054ba52754b1a19d6c3e9268fa9ff14edaf
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
-rw-r--r-- | src/core/jobs/qaspectjob.cpp | 20 | ||||
-rw-r--r-- | src/core/jobs/qaspectjob.h | 1 | ||||
-rw-r--r-- | src/render/backend/renderer.cpp | 2 | ||||
-rw-r--r-- | src/render/frontend/qrenderaspect.cpp | 2 | ||||
-rw-r--r-- | tests/auto/core/qaspectjob/tst_qaspectjob.cpp | 2 |
5 files changed, 11 insertions, 16 deletions
diff --git a/src/core/jobs/qaspectjob.cpp b/src/core/jobs/qaspectjob.cpp index 8b680447f..058531b56 100644 --- a/src/core/jobs/qaspectjob.cpp +++ b/src/core/jobs/qaspectjob.cpp @@ -83,7 +83,14 @@ void QAspectJob::addDependency(QWeakPointer<QAspectJob> dependency) void QAspectJob::removeDependency(QWeakPointer<QAspectJob> dependency) { Q_D(QAspectJob); - d->m_dependencies.removeAll(dependency); + if (!dependency.isNull()) { + d->m_dependencies.removeAll(dependency); + } else { + d->m_dependencies.erase(std::remove_if(d->m_dependencies.begin(), + d->m_dependencies.end(), + isDependencyNull), + d->m_dependencies.end()); + } } QVector<QWeakPointer<QAspectJob> > QAspectJob::dependencies() const @@ -92,17 +99,6 @@ QVector<QWeakPointer<QAspectJob> > QAspectJob::dependencies() const return d->m_dependencies; } -void QAspectJob::clearNullDependencies() -{ - Q_D(QAspectJob); - d->m_dependencies.erase(std::remove_if(d->m_dependencies.begin(), - d->m_dependencies.end(), - isDependencyNull), - d->m_dependencies.end()); -} - - - } // namespace Qt3DCore QT_END_NAMESPACE diff --git a/src/core/jobs/qaspectjob.h b/src/core/jobs/qaspectjob.h index 56dae611c..faa77a1d2 100644 --- a/src/core/jobs/qaspectjob.h +++ b/src/core/jobs/qaspectjob.h @@ -57,7 +57,6 @@ public: void removeDependency(QWeakPointer<QAspectJob> dependency); QVector<QWeakPointer<QAspectJob> > dependencies() const; - void clearNullDependencies(); virtual void run() = 0; diff --git a/src/render/backend/renderer.cpp b/src/render/backend/renderer.cpp index c64d811cd..5fdd6e136 100644 --- a/src/render/backend/renderer.cpp +++ b/src/render/backend/renderer.cpp @@ -748,7 +748,7 @@ QAspectJobPtr Renderer::pickBoundingVolumeJob() // Clear any previous dependency not valid anymore if (!m_pickBoundingVolumeJob) m_pickBoundingVolumeJob.reset(new PickBoundingVolumeJob(this)); - m_pickBoundingVolumeJob->clearNullDependencies(); + m_pickBoundingVolumeJob->removeDependency(QWeakPointer<QAspectJob>()); m_pickBoundingVolumeJob->setRoot(m_renderSceneRoot); return m_pickBoundingVolumeJob; } diff --git a/src/render/frontend/qrenderaspect.cpp b/src/render/frontend/qrenderaspect.cpp index b2b85bddf..685879f8c 100644 --- a/src/render/frontend/qrenderaspect.cpp +++ b/src/render/frontend/qrenderaspect.cpp @@ -350,7 +350,7 @@ QVector<Qt3DCore::QAspectJobPtr> QRenderAspect::jobsToExecute(qint64 time) } // Clear any previous temporary dependency - d->m_calculateBoundingVolumeJob->clearNullDependencies(); + d->m_calculateBoundingVolumeJob->removeDependency(QWeakPointer<QAspectJob>()); const QVector<QAspectJobPtr> bufferJobs = createRenderBufferJobs(); Q_FOREACH (const QAspectJobPtr bufferJob, bufferJobs) d->m_calculateBoundingVolumeJob->addDependency(bufferJob); diff --git a/tests/auto/core/qaspectjob/tst_qaspectjob.cpp b/tests/auto/core/qaspectjob/tst_qaspectjob.cpp index 8bda72b86..6864cf0f8 100644 --- a/tests/auto/core/qaspectjob/tst_qaspectjob.cpp +++ b/tests/auto/core/qaspectjob/tst_qaspectjob.cpp @@ -103,7 +103,7 @@ private Q_SLOTS: // WHEN job2.clear(); - job1->clearNullDependencies(); + job1->removeDependency(QWeakPointer<QAspectJob>()); // THEN QCOMPARE(job1->dependencies().size(), 1); |