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 <orgads@gmail.com>
This commit is contained in:
Jarek Kobus
2022-09-08 17:30:07 +02:00
parent f7424725df
commit bf99841eb9

View File

@@ -85,7 +85,7 @@ public:
void setup(); void setup();
void cleanup(); void cleanup();
void setupProcess(QtcProcess *process, const Job &job); void setupProcess(QtcProcess *process, const Job &job);
void setupSynchronous(QtcProcess *process); void installStdCallbacks(QtcProcess *process);
bool isFullySynchronous() const; bool isFullySynchronous() const;
void handleDone(QtcProcess *process); void handleDone(QtcProcess *process);
void startAll(); void startAll();
@@ -179,7 +179,7 @@ void VcsCommandPrivate::setupProcess(QtcProcess *process, const Job &job)
process->setCodec(m_codec); process->setCodec(m_codec);
} }
void VcsCommandPrivate::setupSynchronous(QtcProcess *process) void VcsCommandPrivate::installStdCallbacks(QtcProcess *process)
{ {
if (!(m_flags & VcsCommand::MergeOutputChannels) if (!(m_flags & VcsCommand::MergeOutputChannels)
&& (m_progressiveOutput || !(m_flags & VcsCommand::SuppressStdErr))) { && (m_progressiveOutput || !(m_flags & VcsCommand::SuppressStdErr))) {
@@ -241,8 +241,7 @@ void VcsCommandPrivate::startNextJob()
m_process.reset(new QtcProcess); m_process.reset(new QtcProcess);
connect(m_process.get(), &QtcProcess::done, this, &VcsCommandPrivate::processDone); connect(m_process.get(), &QtcProcess::done, this, &VcsCommandPrivate::processDone);
setupProcess(m_process.get(), m_jobs.at(m_currentJob)); setupProcess(m_process.get(), m_jobs.at(m_currentJob));
if (!isFullySynchronous()) installStdCallbacks(m_process.get());
setupSynchronous(m_process.get());
m_process->start(); m_process->start();
} }
@@ -407,7 +406,7 @@ void VcsCommand::runSynchronous(QtcProcess &process)
process.stop(); process.stop();
process.waitForFinished(); process.waitForFinished();
}); });
d->setupSynchronous(&process); d->installStdCallbacks(&process);
process.setTimeOutMessageBoxEnabled(true); process.setTimeOutMessageBoxEnabled(true);
process.runBlocking(EventLoopMode::On); process.runBlocking(EventLoopMode::On);
} }