summaryrefslogtreecommitdiff
path: root/src/plugins/git/mergetool.cpp
diff options
context:
space:
mode:
authorJarek Kobus <jaroslaw.kobus@qt.io>2022-06-22 07:28:15 +0200
committerJarek Kobus <jaroslaw.kobus@qt.io>2022-06-22 06:30:04 +0000
commit94adc1a566eaf8e29970e85619ffdc4b64d3561b (patch)
treec73bc64536ebe264bab40d5050c7da049096382c /src/plugins/git/mergetool.cpp
parent35c3d9430b28a05c200a631ce05f60c24f7889b6 (diff)
downloadqt-creator-94adc1a566eaf8e29970e85619ffdc4b64d3561b.tar.gz
MergeTool: Don't call blocking waitForStarted()
Connect to done() signal instead of finished(). In case the process failed to start it will delete itself from inside done handler. Change-Id: I277779904d571759bf3877860d64e80ad304c2da Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'src/plugins/git/mergetool.cpp')
-rw-r--r--src/plugins/git/mergetool.cpp28
1 files changed, 10 insertions, 18 deletions
diff --git a/src/plugins/git/mergetool.cpp b/src/plugins/git/mergetool.cpp
index 97259483be..ceaf634b00 100644
--- a/src/plugins/git/mergetool.cpp
+++ b/src/plugins/git/mergetool.cpp
@@ -52,7 +52,7 @@ MergeTool::~MergeTool()
delete m_process;
}
-bool MergeTool::start(const FilePath &workingDirectory, const QStringList &files)
+void MergeTool::start(const FilePath &workingDirectory, const QStringList &files)
{
QStringList arguments;
arguments << "mergetool" << "-y" << files;
@@ -60,6 +60,8 @@ bool MergeTool::start(const FilePath &workingDirectory, const QStringList &files
env.set("LANG", "C");
env.set("LANGUAGE", "C");
m_process = new QtcProcess;
+ connect(m_process, &QtcProcess::done, this, &MergeTool::done);
+ connect(m_process, &QtcProcess::readyReadStandardOutput, this, &MergeTool::readData);
m_process->setProcessMode(ProcessMode::Writer);
m_process->setWorkingDirectory(workingDirectory);
m_process->setEnvironment(env);
@@ -69,15 +71,6 @@ bool MergeTool::start(const FilePath &workingDirectory, const QStringList &files
VcsOutputWindow::appendCommand(workingDirectory, cmd);
m_process->setCommand(cmd);
m_process->start();
- if (m_process->waitForStarted()) {
- connect(m_process, &QtcProcess::finished, this, &MergeTool::done);
- connect(m_process, &QtcProcess::readyReadStandardOutput, this, &MergeTool::readData);
- } else {
- delete m_process;
- m_process = nullptr;
- return false;
- }
- return true;
}
MergeTool::FileState MergeTool::parseStatus(const QString &line, QString &extraInfo)
@@ -254,15 +247,14 @@ void MergeTool::readLine(const QString &line)
void MergeTool::done()
{
+ const bool success = m_process->result() == ProcessResult::FinishedWithSuccess;
+ if (success)
+ VcsOutputWindow::appendMessage(m_process->exitMessage());
+ else
+ VcsOutputWindow::appendError(m_process->exitMessage());
+
const FilePath workingDirectory = m_process->workingDirectory();
- int exitCode = m_process->exitCode();
- if (!exitCode) {
- VcsOutputWindow::appendMessage(tr("Merge tool process finished successfully."));
- } else {
- VcsOutputWindow::appendError(tr("Merge tool process terminated with exit code %1")
- .arg(exitCode));
- }
- GitClient::instance()->continueCommandIfNeeded(workingDirectory, exitCode == 0);
+ GitClient::instance()->continueCommandIfNeeded(workingDirectory, success);
GitPlugin::emitRepositoryChanged(workingDirectory);
deleteLater();
}