Commit 68e8a56b authored by Ulf Hermann's avatar Ulf Hermann

ProjectExplorer: Introduce an "essential" flag for RunWorker

An essential RunWorker triggers the whole RunControl to stop if it
spontaneously stops.

Change-Id: Ia05b927e306022e99b45cc8cd7ab9636f4d3c129
Reviewed-by: default avatarhjk <hjk@qt.io>
parent 6f5c5a56
......@@ -547,6 +547,7 @@ public:
int stopWatchdogInterval = 0; // 5000;
int stopWatchdogTimerId = -1;
bool supportsReRunning = true;
bool essential = false;
};
enum class RunControlState
......@@ -954,6 +955,10 @@ void RunControlPrivate::onWorkerStopped(RunWorker *worker)
if (state == RunControlState::Finishing || state == RunControlState::Stopping) {
continueStopOrFinish();
return;
} else if (worker->isEssential()) {
debugMessage(workerId + " is essential. Stopping all others.");
initiateStop();
return;
}
for (RunWorker *dependent : worker->d->stopDependencies) {
......@@ -1701,6 +1706,16 @@ QString RunWorker::userMessageForProcessError(QProcess::ProcessError error, cons
return msg;
}
bool RunWorker::isEssential() const
{
return d->essential;
}
void RunWorker::setEssential(bool essential)
{
d->essential = essential;
}
void RunWorker::start()
{
reportStarted();
......
......@@ -353,6 +353,9 @@ public:
static QString userMessageForProcessError(QProcess::ProcessError, const QString &programName);
bool isEssential() const;
void setEssential(bool essential);
signals:
void started();
void stopped();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment