From 3527ea8942cd7cc51c290138faed223a1cf86bca Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Tue, 13 Jul 2021 16:46:50 +0200 Subject: [PATCH] Pass the OpenMode to process launcher Change-Id: I8f2c344999c17a5b25a12ec16b2fe1d7b2481893 Reviewed-by: hjk --- src/libs/utils/launcherpackets.cpp | 4 ++-- src/libs/utils/launcherpackets.h | 3 ++- src/libs/utils/qtcprocess.cpp | 5 ++++- src/tools/processlauncher/launchersockethandler.cpp | 4 ++-- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/libs/utils/launcherpackets.cpp b/src/libs/utils/launcherpackets.cpp index 38fd492ed50..0de10253c63 100644 --- a/src/libs/utils/launcherpackets.cpp +++ b/src/libs/utils/launcherpackets.cpp @@ -58,12 +58,12 @@ StartProcessPacket::StartProcessPacket(quintptr token) void StartProcessPacket::doSerialize(QDataStream &stream) const { - stream << command << arguments << workingDir << env << mode; + stream << command << arguments << workingDir << env << openMode << channelMode; } void StartProcessPacket::doDeserialize(QDataStream &stream) { - stream >> command >> arguments >> workingDir >> env >> mode; + stream >> command >> arguments >> workingDir >> env >> openMode >> channelMode; } diff --git a/src/libs/utils/launcherpackets.h b/src/libs/utils/launcherpackets.h index 9795f0f9da8..6844292e07f 100644 --- a/src/libs/utils/launcherpackets.h +++ b/src/libs/utils/launcherpackets.h @@ -99,7 +99,8 @@ public: QStringList arguments; QString workingDir; QStringList env; - QProcess::ProcessChannelMode mode = QProcess::SeparateChannels; + QIODevice::OpenMode openMode = QIODevice::ReadWrite; + QProcess::ProcessChannelMode channelMode = QProcess::SeparateChannels; private: void doSerialize(QDataStream &stream) const override; diff --git a/src/libs/utils/qtcprocess.cpp b/src/libs/utils/qtcprocess.cpp index bdb09a5e08e..8b10ed92f73 100644 --- a/src/libs/utils/qtcprocess.cpp +++ b/src/libs/utils/qtcprocess.cpp @@ -376,6 +376,7 @@ private: QString m_errorString; QProcess::ProcessError m_error = QProcess::UnknownError; QProcess::ProcessState m_state = QProcess::NotRunning; + QIODevice::OpenMode m_openMode = QIODevice::ReadWrite; QProcess::ProcessChannelMode m_channelMode = QProcess::SeparateChannels; int m_processId = 0; int m_exitCode = 0; @@ -430,6 +431,7 @@ void ProcessLauncherImpl::start(const QString &program, const QStringList &argum m_command = program; m_arguments = arguments; m_state = QProcess::Starting; + m_openMode = mode; if (LauncherInterface::socket()->isReady()) doStart(); } @@ -441,7 +443,8 @@ void ProcessLauncherImpl::doStart() p.arguments = m_arguments; p.env = m_environment.toStringList(); p.workingDir = m_workingDirectory; - p.mode = m_channelMode; + p.openMode = m_openMode; + p.channelMode = m_channelMode; sendPacket(p); } diff --git a/src/tools/processlauncher/launchersockethandler.cpp b/src/tools/processlauncher/launchersockethandler.cpp index a97d1bc68f0..98beca57d28 100644 --- a/src/tools/processlauncher/launchersockethandler.cpp +++ b/src/tools/processlauncher/launchersockethandler.cpp @@ -230,8 +230,8 @@ void LauncherSocketHandler::handleStartPacket() m_packetParser.packetData()); process->setEnvironment(packet.env); process->setWorkingDirectory(packet.workingDir); - process->setProcessChannelMode(packet.mode); - process->start(packet.command, packet.arguments); + process->setProcessChannelMode(packet.channelMode); + process->start(packet.command, packet.arguments, packet.openMode); process->closeWriteChannel(); }