diff options
-rw-r--r-- | src/jomlib/targetexecutor.cpp | 11 | ||||
-rw-r--r-- | src/jomlib/targetexecutor.h | 1 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/jomlib/targetexecutor.cpp b/src/jomlib/targetexecutor.cpp index f765f2a..0f20d62 100644 --- a/src/jomlib/targetexecutor.cpp +++ b/src/jomlib/targetexecutor.cpp @@ -177,6 +177,16 @@ void TargetExecutor::waitForProcesses() process->waitForFinished(); } +void TargetExecutor::waitForJobClient() +{ + if (!m_jobClient->isAcquiring()) + return; + QEventLoop loop; + connect(m_jobClient, &JobClient::acquired, &loop, &QEventLoop::quit); + loop.exec(); + m_jobClient->release(); +} + void TargetExecutor::finishBuild(int exitCode) { if (exitCode == 0 @@ -234,6 +244,7 @@ void TargetExecutor::onChildFinished(CommandExecutor* executor, bool commandFail m_depgraph->clear(); m_pendingTargets.clear(); waitForProcesses(); + waitForJobClient(); finishBuild(2); } diff --git a/src/jomlib/targetexecutor.h b/src/jomlib/targetexecutor.h index f1a5d32..3379251 100644 --- a/src/jomlib/targetexecutor.h +++ b/src/jomlib/targetexecutor.h @@ -61,6 +61,7 @@ private slots: private: int numberOfRunningProcesses() const; void waitForProcesses(); + void waitForJobClient(); void finishBuild(int exitCode); void findNextTarget(); |