diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2022-06-22 06:45:00 +0200 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@qt.io> | 2022-06-22 10:20:28 +0000 |
commit | 418ce762df54f6146b241b21a7535893defeab68 (patch) | |
tree | 127932d702c92a2be9426a8fef1a24a933d2cc19 | |
parent | 5c5b3cac941673e931bfa4230d0d16fd6197c3d6 (diff) |
PdbEngine: Don't call blocking waitForStarted()
Connect to started() signal instead and continue
setup in its handler. Handle failed to start case
inside done() signal handler.
Change-Id: I9878490e8d30cf189c63800db658afae50141ce0
Reviewed-by: hjk <hjk@qt.io>
-rw-r--r-- | src/plugins/debugger/pdb/pdbengine.cpp | 21 | ||||
-rw-r--r-- | src/plugins/debugger/pdb/pdbengine.h | 1 |
2 files changed, 13 insertions, 9 deletions
diff --git a/src/plugins/debugger/pdb/pdbengine.cpp b/src/plugins/debugger/pdb/pdbengine.cpp index bd34b36cddf..54375baf7f1 100644 --- a/src/plugins/debugger/pdb/pdbengine.cpp +++ b/src/plugins/debugger/pdb/pdbengine.cpp @@ -121,7 +121,8 @@ void PdbEngine::setupEngine() m_interpreter = runParameters().interpreter; QString bridge = ICore::resourcePath("debugger/pdbbridge.py").toString(); - connect(&m_proc, &QtcProcess::finished, this, &PdbEngine::handlePdbDone); + connect(&m_proc, &QtcProcess::started, this, &PdbEngine::handlePdbStarted); + connect(&m_proc, &QtcProcess::done, this, &PdbEngine::handlePdbDone); connect(&m_proc, &QtcProcess::readyReadStandardOutput, this, &PdbEngine::readPdbStandardOutput); connect(&m_proc, &QtcProcess::readyReadStandardError, this, &PdbEngine::readPdbStandardError); @@ -138,15 +139,10 @@ void PdbEngine::setupEngine() m_proc.setEnvironment(runParameters().debugger.environment); m_proc.setCommand(cmd); m_proc.start(); +} - if (!m_proc.waitForStarted()) { - notifyEngineSetupFailed(); - showMessage("ADAPTER START FAILED"); - ICore::showWarningWithOptions(tr("Adapter start failed"), m_proc.exitMessage()); - notifyEngineSetupFailed(); - return; - } - +void PdbEngine::handlePdbStarted() +{ notifyEngineSetupOk(); QTC_ASSERT(state() == EngineRunRequested, qDebug() << state()); @@ -416,6 +412,13 @@ QString PdbEngine::errorMessage(QProcess::ProcessError error) const void PdbEngine::handlePdbDone() { + if (m_proc.result() == ProcessResult::StartFailed) { + notifyEngineSetupFailed(); + showMessage("ADAPTER START FAILED"); + ICore::showWarningWithOptions(tr("Adapter start failed"), m_proc.exitMessage()); + return; + } + const QProcess::ProcessError error = m_proc.error(); if (error != QProcess::UnknownError) { showMessage("HANDLE PDB ERROR"); diff --git a/src/plugins/debugger/pdb/pdbengine.h b/src/plugins/debugger/pdb/pdbengine.h index b8edaf5f44a..efde41e2ce9 100644 --- a/src/plugins/debugger/pdb/pdbengine.h +++ b/src/plugins/debugger/pdb/pdbengine.h @@ -100,6 +100,7 @@ private: QString errorMessage(QProcess::ProcessError error) const; bool hasCapability(unsigned cap) const override; + void handlePdbStarted(); void handlePdbDone(); void readPdbStandardOutput(); void readPdbStandardError(); |