forked from qt-creator/qt-creator
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:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user