diff options
author | Marcus Tillmanns <[email protected]> | 2023-05-04 08:09:40 +0200 |
---|---|---|
committer | Marcus Tillmanns <[email protected]> | 2023-05-04 10:43:36 +0000 |
commit | e6081aaa0a845a3cb9af1e4ff9cc8278aca2c276 (patch) | |
tree | 2e713b9cbf24cd66b2b780f7e511ffcfa354cbbb /src/libs/utils/terminalinterface.cpp | |
parent | a059f87754c68aec9095b092f23a8cab325a5dfc (diff) |
Utils: Add TerminalMode::Detached
Change-Id: Ic36845d3469719e17f24602ce80f3e6cfc984fbf
Reviewed-by: Christian Stenger <[email protected]>
Diffstat (limited to 'src/libs/utils/terminalinterface.cpp')
-rw-r--r-- | src/libs/utils/terminalinterface.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/libs/utils/terminalinterface.cpp b/src/libs/utils/terminalinterface.cpp index 74831723296..bb193b4d98d 100644 --- a/src/libs/utils/terminalinterface.cpp +++ b/src/libs/utils/terminalinterface.cpp @@ -300,6 +300,25 @@ void TerminalInterface::start() if (isRunning()) return; + if (m_setup.m_terminalMode == TerminalMode::Detached) { + expected_str<qint64> result; + QMetaObject::invokeMethod( + d->stubCreator, + [this, &result] { + result = d->stubCreator->startStubProcess(m_setup.m_commandLine, m_setup); + }, + d->stubCreator->thread() == QThread::currentThread() ? Qt::DirectConnection + : Qt::BlockingQueuedConnection); + + if (result) { + emit started(*result, 0); + emitFinished(0, QProcess::NormalExit); + } else { + emitError(QProcess::FailedToStart, result.error()); + } + return; + } + const expected_str<void> result = startStubServer(); if (!result) { emitError(QProcess::FailedToStart, msgCommChannelFailed(result.error())); @@ -391,6 +410,8 @@ qint64 TerminalInterface::write(const QByteArray &data) } void TerminalInterface::sendControlSignal(ControlSignal controlSignal) { + QTC_ASSERT(m_setup.m_terminalMode != TerminalMode::Detached, return); + switch (controlSignal) { case ControlSignal::Terminate: case ControlSignal::Kill: |