From 51b6efb1163615c3a5a5f876388dcb8e99e6c8c2 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Fri, 2 Dec 2022 12:40:12 +0100 Subject: [PATCH] AbstractProcessStep: Don't read std channels on done Since we are connected to process' readyRead signals and perform readAll inside handlers, there is no need to do it again inside process' done handler. It's guaranteed that before process emits done() signal it emits readyRead signals if new data appeared on any channel. Remove processReadyReadStdOutput() and processReadyReadStdError() helpers. Change-Id: I7e921335e6410a26efd9619cbed8f5e6852d2cf2 Reviewed-by: Reviewed-by: hjk Reviewed-by: Qt CI Bot Reviewed-by: Christian Kandeler --- .../projectexplorer/abstractprocessstep.cpp | 24 +++++-------------- .../projectexplorer/abstractprocessstep.h | 2 -- 2 files changed, 6 insertions(+), 20 deletions(-) diff --git a/src/plugins/projectexplorer/abstractprocessstep.cpp b/src/plugins/projectexplorer/abstractprocessstep.cpp index 4156989a84c..3e835e3f521 100644 --- a/src/plugins/projectexplorer/abstractprocessstep.cpp +++ b/src/plugins/projectexplorer/abstractprocessstep.cpp @@ -203,10 +203,12 @@ void AbstractProcessStep::doRun() if (d->m_lowPriority && ProjectExplorerPlugin::projectExplorerSettings().lowBuildPriority) d->m_process->setLowPriority(); - connect(d->m_process.get(), &QtcProcess::readyReadStandardOutput, - this, &AbstractProcessStep::processReadyReadStdOutput); - connect(d->m_process.get(), &QtcProcess::readyReadStandardError, - this, &AbstractProcessStep::processReadyReadStdError); + connect(d->m_process.get(), &QtcProcess::readyReadStandardOutput, this, [this] { + stdOutput(d->stdoutStream->toUnicode(d->m_process->readAllStandardOutput())); + }); + connect(d->m_process.get(), &QtcProcess::readyReadStandardError, this, [this] { + stdError(d->stderrStream->toUnicode(d->m_process->readAllStandardError())); + }); connect(d->m_process.get(), &QtcProcess::started, this, &AbstractProcessStep::processStarted); connect(d->m_process.get(), &QtcProcess::done, @@ -324,12 +326,6 @@ void AbstractProcessStep::processStartupFailed() finish(false); } -void AbstractProcessStep::processReadyReadStdOutput() -{ - QTC_ASSERT(d->m_process.get(), return); - stdOutput(d->stdoutStream->toUnicode(d->m_process->readAllStandardOutput())); -} - /*! Called for each line of output on stdOut(). @@ -341,12 +337,6 @@ void AbstractProcessStep::stdOutput(const QString &output) emit addOutput(output, BuildStep::OutputFormat::Stdout, BuildStep::DontAppendNewline); } -void AbstractProcessStep::processReadyReadStdError() -{ - QTC_ASSERT(d->m_process.get(), return); - stdError(d->stderrStream->toUnicode(d->m_process->readAllStandardError())); -} - /*! Called for each line of output on StdErrror(). @@ -371,8 +361,6 @@ void AbstractProcessStep::handleProcessDone() d->m_process.release()->deleteLater(); return; } - stdError(d->stderrStream->toUnicode(d->m_process->readAllStandardError())); - stdOutput(d->stdoutStream->toUnicode(d->m_process->readAllStandardOutput())); d->cleanUp(d->m_process->exitCode(), d->m_process->exitStatus()); } diff --git a/src/plugins/projectexplorer/abstractprocessstep.h b/src/plugins/projectexplorer/abstractprocessstep.h index d0fe76c1bb1..addd68cf570 100644 --- a/src/plugins/projectexplorer/abstractprocessstep.h +++ b/src/plugins/projectexplorer/abstractprocessstep.h @@ -51,8 +51,6 @@ protected: private: virtual void processFinished(bool success); - void processReadyReadStdOutput(); - void processReadyReadStdError(); void handleProcessDone(); class Private;