aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/utils/terminalinterface.cpp
diff options
context:
space:
mode:
authorMarcus Tillmanns <[email protected]>2023-05-04 08:09:40 +0200
committerMarcus Tillmanns <[email protected]>2023-05-04 10:43:36 +0000
commite6081aaa0a845a3cb9af1e4ff9cc8278aca2c276 (patch)
tree2e713b9cbf24cd66b2b780f7e511ffcfa354cbbb /src/libs/utils/terminalinterface.cpp
parenta059f87754c68aec9095b092f23a8cab325a5dfc (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.cpp21
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: