summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Ottens <kevin.ottens@kdab.com>2015-12-14 18:33:39 +0100
committerKevin Ottens <kevin.ottens@kdab.com>2015-12-16 13:54:27 +0000
commitedb8095b8c9a9d86f6b6abccf5d4d821470a5154 (patch)
tree368e6868ed34a166d96e3e31c36be4070c31f808
parentc10370585b6228c3564a22f22ec60ee24c9fe9f1 (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.cpp20
-rw-r--r--src/core/jobs/qaspectjob.h1
-rw-r--r--src/render/backend/renderer.cpp2
-rw-r--r--src/render/frontend/qrenderaspect.cpp2
-rw-r--r--tests/auto/core/qaspectjob/tst_qaspectjob.cpp2
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);