diff --git a/src/plugins/projectexplorer/abstractprocessstep.cpp b/src/plugins/projectexplorer/abstractprocessstep.cpp index f07fa20e6dc..a2f2e752ee7 100644 --- a/src/plugins/projectexplorer/abstractprocessstep.cpp +++ b/src/plugins/projectexplorer/abstractprocessstep.cpp @@ -104,7 +104,6 @@ public: Private(AbstractProcessStep *q) : q(q) {} AbstractProcessStep *q; - QTimer m_timer; QFutureInterface *m_futureInterface = nullptr; std::unique_ptr m_process; std::unique_ptr m_outputParserChain; @@ -126,8 +125,6 @@ AbstractProcessStep::AbstractProcessStep(BuildStepList *bsl, Core::Id id) : BuildStep(bsl, id), d(new Private(this)) { - d->m_timer.setInterval(500); - connect(&d->m_timer, &QTimer::timeout, this, &AbstractProcessStep::checkForCancel); setRunInGuiThread(true); } @@ -256,7 +253,11 @@ void AbstractProcessStep::run(QFutureInterface &fi) return; } processStarted(); - d->m_timer.start(); +} + +void AbstractProcessStep::cancel() +{ + Core::Reaper::reap(d->m_process.release()); } ProcessParameters *AbstractProcessStep::processParameters() @@ -328,7 +329,6 @@ void AbstractProcessStep::processStartupFailed() .arg(QDir::toNativeSeparators(d->m_param.effectiveCommand()), d->m_param.prettyArguments()), BuildStep::OutputFormat::ErrorMessage); - d->m_timer.stop(); } /*! @@ -425,15 +425,6 @@ QFutureInterface *AbstractProcessStep::futureInterface() const return d->m_futureInterface; } -void AbstractProcessStep::checkForCancel() -{ - if (d->m_futureInterface->isCanceled() && d->m_timer.isActive()) { - d->m_timer.stop(); - - Core::Reaper::reap(d->m_process.release()); - } -} - void AbstractProcessStep::taskAdded(const Task &task, int linkedOutputLines, int skipLines) { // Do not bother to report issues if we do not care about the results of @@ -500,8 +491,6 @@ void AbstractProcessStep::outputAdded(const QString &string, BuildStep::OutputFo void AbstractProcessStep::slotProcessFinished(int, QProcess::ExitStatus) { - d->m_timer.stop(); - QProcess *process = d->m_process.get(); if (!process) // Happens when the process was canceled and handed over to the Reaper. process = qobject_cast(sender()); // The process was canceled! diff --git a/src/plugins/projectexplorer/abstractprocessstep.h b/src/plugins/projectexplorer/abstractprocessstep.h index ddef669558e..84b7caa1d5d 100644 --- a/src/plugins/projectexplorer/abstractprocessstep.h +++ b/src/plugins/projectexplorer/abstractprocessstep.h @@ -43,6 +43,7 @@ class PROJECTEXPLORER_EXPORT AbstractProcessStep : public BuildStep public: bool init() override; void run(QFutureInterface &) override; + void cancel() override; ProcessParameters *processParameters(); @@ -72,7 +73,6 @@ private: void processReadyReadStdOutput(); void processReadyReadStdError(); void slotProcessFinished(int, QProcess::ExitStatus); - void checkForCancel(); void cleanUp(QProcess *process);