From bf99841eb905db4a88b5b04ce02e25d24211c9ec Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Thu, 8 Sep 2022 17:30:07 +0200 Subject: [PATCH] VcsCommand: Fix progress reporting during execute() In case of calling execute() the fully or not fully synchronous setting is no-op now, as we execute always in the caller thread and don't use blocking API of QtcProcess and don't create nested event loop. Behave the same regardless of these flags and always setup std callbacks if needed. Rename setupSynchronous() into installStdCallbacks() to better reflect the current intention. Change-Id: I93642c61d98a26c16298725f0d910d0dd80414b1 Reviewed-by: Orgad Shaneh --- src/plugins/vcsbase/vcscommand.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/plugins/vcsbase/vcscommand.cpp b/src/plugins/vcsbase/vcscommand.cpp index 591b43e8676..b53a4e88378 100644 --- a/src/plugins/vcsbase/vcscommand.cpp +++ b/src/plugins/vcsbase/vcscommand.cpp @@ -85,7 +85,7 @@ public: void setup(); void cleanup(); void setupProcess(QtcProcess *process, const Job &job); - void setupSynchronous(QtcProcess *process); + void installStdCallbacks(QtcProcess *process); bool isFullySynchronous() const; void handleDone(QtcProcess *process); void startAll(); @@ -179,7 +179,7 @@ void VcsCommandPrivate::setupProcess(QtcProcess *process, const Job &job) process->setCodec(m_codec); } -void VcsCommandPrivate::setupSynchronous(QtcProcess *process) +void VcsCommandPrivate::installStdCallbacks(QtcProcess *process) { if (!(m_flags & VcsCommand::MergeOutputChannels) && (m_progressiveOutput || !(m_flags & VcsCommand::SuppressStdErr))) { @@ -241,8 +241,7 @@ void VcsCommandPrivate::startNextJob() m_process.reset(new QtcProcess); connect(m_process.get(), &QtcProcess::done, this, &VcsCommandPrivate::processDone); setupProcess(m_process.get(), m_jobs.at(m_currentJob)); - if (!isFullySynchronous()) - setupSynchronous(m_process.get()); + installStdCallbacks(m_process.get()); m_process->start(); } @@ -407,7 +406,7 @@ void VcsCommand::runSynchronous(QtcProcess &process) process.stop(); process.waitForFinished(); }); - d->setupSynchronous(&process); + d->installStdCallbacks(&process); process.setTimeOutMessageBoxEnabled(true); process.runBlocking(EventLoopMode::On); }