ProjectExplorer: Do not change state of sibling RunWorkers

... when a RunWorker reportStopped(). We have now always a
"main" RunWorker (again) that is in a better position to decide
what to do with "lower" worker states than the RunControl.

The overall RunControl stopped state meaning is not changed:
It is Stopped if all workers are Stopped (or Done, or Failed)

Change-Id: I04ce6a8cb5b2067ec05fd506f6adc6ca65de0c39
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2017-07-19 10:35:08 +02:00
parent c8a543b949
commit 652d2081ec

View File

@@ -982,17 +982,14 @@ void RunControlPrivate::onWorkerStopped(RunWorker *worker)
debugMessage(" Examining worker " + workerId); debugMessage(" Examining worker " + workerId);
switch (worker->d->state) { switch (worker->d->state) {
case RunWorkerState::Initialized: case RunWorkerState::Initialized:
debugMessage(" " + workerId + " was Initialized, setting to Done"); debugMessage(" " + workerId + " was Initialized.");
worker->d->state = RunWorkerState::Done;
break; break;
case RunWorkerState::Starting: case RunWorkerState::Starting:
worker->d->state = RunWorkerState::Stopping; debugMessage(" " + workerId + " was Starting, waiting for its response");
debugMessage(" " + workerId + " was Starting, queuing stop");
allDone = false; allDone = false;
break; break;
case RunWorkerState::Running: case RunWorkerState::Running:
debugMessage(" " + workerId + " was Running, queuing stop"); debugMessage(" " + workerId + " was Running, waiting for its response");
worker->d->state = RunWorkerState::Stopping;
allDone = false; allDone = false;
break; break;
case RunWorkerState::Stopping: case RunWorkerState::Stopping: