diff options
author | Mika Salmela <mika.salmela@theqtcompany.com> | 2015-02-23 15:09:47 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> | 2015-02-26 14:34:18 +0000 |
commit | d0adfe64c69429da558ee24047f3be71f47a03ad (patch) | |
tree | 33a36dc36e0866e3037d2a535ee388aafcfd92d8 /src | |
parent | bbf86a751a4cc235ef0fb97bfde4af487ab9a40f (diff) |
Fix for ThreadPooler flush
Increment running thread counter before removing task from the queue. This
prevents the idle test to pass if queue is empty and job runner hasn't yet
increased the counter.
Change-Id: I01992ef6e9b437d2ce3d9f62e6025b3122e19fa8
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/core/jobs/jobrunner.cpp | 1 | ||||
-rw-r--r-- | src/core/jobs/qthreadpooler.cpp | 3 |
2 files changed, 3 insertions, 1 deletions
diff --git a/src/core/jobs/jobrunner.cpp b/src/core/jobs/jobrunner.cpp index d1cfe234b..ab5555585 100644 --- a/src/core/jobs/jobrunner.cpp +++ b/src/core/jobs/jobrunner.cpp @@ -66,7 +66,6 @@ void JobRunner::run() while (!m_abort.load()) { if (const QSharedPointer<TaskInterface> task = m_pooler->nextTask()) { - m_pooler->startRunning(); task->run(task, this); m_pooler->stopRunning(); } else { diff --git a/src/core/jobs/qthreadpooler.cpp b/src/core/jobs/qthreadpooler.cpp index 1620185b5..e187e8bff 100644 --- a/src/core/jobs/qthreadpooler.cpp +++ b/src/core/jobs/qthreadpooler.cpp @@ -176,6 +176,9 @@ QSharedPointer<TaskInterface> QThreadPooler::nextTask() const QSharedPointer<TaskInterface> &candidate = d->m_taskQueue.at(i); if (!hasDependencies(candidate)) { task = candidate; + // Increment running thread counter before removing item from queue + // so that isIdle test keeps up + d->incRunningThreads(); d->m_taskQueue.removeAt(i); break; |