forked from qt-creator/qt-creator
ProjectExplorer: Kill dependent RunWorkers if dependencies go away
There is no point in e.g. keeping the QML profiler RunWorker going if the process has spontaneously stopped. Change-Id: Ifdae17231cb193fd220397fa0739a74871ceeab3 Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -961,6 +961,22 @@ void RunControlPrivate::onWorkerStopped(RunWorker *worker)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (RunWorker *dependent : worker->d->stopDependencies) {
|
||||||
|
switch (dependent->d->state) {
|
||||||
|
case RunWorkerState::Done:
|
||||||
|
case RunWorkerState::Failed:
|
||||||
|
break;
|
||||||
|
case RunWorkerState::Initialized:
|
||||||
|
dependent->d->state = RunWorkerState::Done;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
debugMessage("Killing " + dependent->d->id + " as it depends on stopped " + workerId);
|
||||||
|
dependent->d->state = RunWorkerState::Stopping;
|
||||||
|
QTimer::singleShot(0, dependent, &RunWorker::initiateStop);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
debugMessage("Checking whether all stopped");
|
debugMessage("Checking whether all stopped");
|
||||||
bool allDone = true;
|
bool allDone = true;
|
||||||
for (RunWorker *worker : m_workers) {
|
for (RunWorker *worker : m_workers) {
|
||||||
|
|||||||
Reference in New Issue
Block a user