summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/jomlib/targetexecutor.cpp11
-rw-r--r--src/jomlib/targetexecutor.h1
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();