diff --git a/src/plugins/boot2qt/qdbdevice.cpp b/src/plugins/boot2qt/qdbdevice.cpp index 603536c2b54..8883522a108 100644 --- a/src/plugins/boot2qt/qdbdevice.cpp +++ b/src/plugins/boot2qt/qdbdevice.cpp @@ -5,7 +5,6 @@ #include "qdbutils.h" #include "qdbconstants.h" -#include "qdbdevicedebugsupport.h" #include @@ -18,6 +17,7 @@ #include #include #include +#include #include #include @@ -39,7 +39,7 @@ public: ~QdbProcessImpl() { killIfRunning(); } private: - void sendControlSignal(ControlSignal controlSignal) final + void handleSendControlSignal(ControlSignal controlSignal) final { QTC_ASSERT(controlSignal != ControlSignal::Interrupt, return); QTC_ASSERT(controlSignal != ControlSignal::KickOff, return); diff --git a/src/plugins/qnx/qnxdevice.cpp b/src/plugins/qnx/qnxdevice.cpp index 3af2301594a..ed5e43a3d03 100644 --- a/src/plugins/qnx/qnxdevice.cpp +++ b/src/plugins/qnx/qnxdevice.cpp @@ -33,7 +33,7 @@ public: private: QString fullCommandLine(const CommandLine &commandLine) const final; - void sendControlSignal(Utils::ControlSignal controlSignal) final; + void handleSendControlSignal(Utils::ControlSignal controlSignal) final; const QString m_pidFile; }; @@ -71,7 +71,7 @@ QString QnxProcessImpl::fullCommandLine(const CommandLine &commandLine) const return fullCommandLine; } -void QnxProcessImpl::sendControlSignal(Utils::ControlSignal controlSignal) +void QnxProcessImpl::handleSendControlSignal(Utils::ControlSignal controlSignal) { QTC_ASSERT(controlSignal != ControlSignal::KickOff, return); const QString args = QString::fromLatin1("-%1 `cat %2`") diff --git a/src/plugins/remotelinux/linuxdevice.cpp b/src/plugins/remotelinux/linuxdevice.cpp index 63a3fb5b9a7..b278a17a2ef 100644 --- a/src/plugins/remotelinux/linuxdevice.cpp +++ b/src/plugins/remotelinux/linuxdevice.cpp @@ -496,6 +496,20 @@ qint64 SshProcessInterface::write(const QByteArray &data) return d->m_process.writeRaw(data); } +void SshProcessInterface::sendControlSignal(Utils::ControlSignal controlSignal) +{ + if (d->m_process.usesTerminal()) { + switch (controlSignal) { + case Utils::ControlSignal::Terminate: d->m_process.terminate(); break; + case Utils::ControlSignal::Kill: d->m_process.kill(); break; + case Utils::ControlSignal::Interrupt: d->m_process.interrupt(); break; + case Utils::ControlSignal::KickOff: d->m_process.kickoffProcess(); break; + } + return; + } + handleSendControlSignal(controlSignal); +} + LinuxProcessInterface::LinuxProcessInterface(const LinuxDevice *linuxDevice) : SshProcessInterface(linuxDevice) { @@ -506,7 +520,7 @@ LinuxProcessInterface::~LinuxProcessInterface() killIfRunning(); } -void LinuxProcessInterface::sendControlSignal(ControlSignal controlSignal) +void LinuxProcessInterface::handleSendControlSignal(ControlSignal controlSignal) { QTC_ASSERT(controlSignal != ControlSignal::KickOff, return); const qint64 pid = processId(); diff --git a/src/plugins/remotelinux/linuxprocessinterface.h b/src/plugins/remotelinux/linuxprocessinterface.h index b3430bce31c..28924591b05 100644 --- a/src/plugins/remotelinux/linuxprocessinterface.h +++ b/src/plugins/remotelinux/linuxprocessinterface.h @@ -19,7 +19,7 @@ public: ~LinuxProcessInterface(); private: - void sendControlSignal(Utils::ControlSignal controlSignal) override; + void handleSendControlSignal(Utils::ControlSignal controlSignal) override; void handleStarted(qint64 processId) final; void handleDone(const Utils::ProcessResultData &resultData) final; diff --git a/src/plugins/remotelinux/sshprocessinterface.h b/src/plugins/remotelinux/sshprocessinterface.h index b5b7fd25eeb..15ad2587f24 100644 --- a/src/plugins/remotelinux/sshprocessinterface.h +++ b/src/plugins/remotelinux/sshprocessinterface.h @@ -31,12 +31,13 @@ private: virtual void handleDone(const Utils::ProcessResultData &resultData); virtual void handleReadyReadStandardOutput(const QByteArray &outputData); virtual void handleReadyReadStandardError(const QByteArray &errorData); + virtual void handleSendControlSignal(Utils::ControlSignal controlSignal) = 0; virtual QString fullCommandLine(const Utils::CommandLine &commandLine) const = 0; void start() final; qint64 write(const QByteArray &data) final; - void sendControlSignal(Utils::ControlSignal controlSignal) override = 0; + void sendControlSignal(Utils::ControlSignal controlSignal) final; friend class SshProcessInterfacePrivate; SshProcessInterfacePrivate *d = nullptr;