Pass the OpenMode to process launcher

Change-Id: I8f2c344999c17a5b25a12ec16b2fe1d7b2481893
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Jarek Kobus
2021-07-13 16:46:50 +02:00
parent 10668b39ce
commit 3527ea8942
4 changed files with 10 additions and 6 deletions

View File

@@ -58,12 +58,12 @@ StartProcessPacket::StartProcessPacket(quintptr token)
void StartProcessPacket::doSerialize(QDataStream &stream) const void StartProcessPacket::doSerialize(QDataStream &stream) const
{ {
stream << command << arguments << workingDir << env << mode; stream << command << arguments << workingDir << env << openMode << channelMode;
} }
void StartProcessPacket::doDeserialize(QDataStream &stream) void StartProcessPacket::doDeserialize(QDataStream &stream)
{ {
stream >> command >> arguments >> workingDir >> env >> mode; stream >> command >> arguments >> workingDir >> env >> openMode >> channelMode;
} }

View File

@@ -99,7 +99,8 @@ public:
QStringList arguments; QStringList arguments;
QString workingDir; QString workingDir;
QStringList env; QStringList env;
QProcess::ProcessChannelMode mode = QProcess::SeparateChannels; QIODevice::OpenMode openMode = QIODevice::ReadWrite;
QProcess::ProcessChannelMode channelMode = QProcess::SeparateChannels;
private: private:
void doSerialize(QDataStream &stream) const override; void doSerialize(QDataStream &stream) const override;

View File

@@ -376,6 +376,7 @@ private:
QString m_errorString; QString m_errorString;
QProcess::ProcessError m_error = QProcess::UnknownError; QProcess::ProcessError m_error = QProcess::UnknownError;
QProcess::ProcessState m_state = QProcess::NotRunning; QProcess::ProcessState m_state = QProcess::NotRunning;
QIODevice::OpenMode m_openMode = QIODevice::ReadWrite;
QProcess::ProcessChannelMode m_channelMode = QProcess::SeparateChannels; QProcess::ProcessChannelMode m_channelMode = QProcess::SeparateChannels;
int m_processId = 0; int m_processId = 0;
int m_exitCode = 0; int m_exitCode = 0;
@@ -430,6 +431,7 @@ void ProcessLauncherImpl::start(const QString &program, const QStringList &argum
m_command = program; m_command = program;
m_arguments = arguments; m_arguments = arguments;
m_state = QProcess::Starting; m_state = QProcess::Starting;
m_openMode = mode;
if (LauncherInterface::socket()->isReady()) if (LauncherInterface::socket()->isReady())
doStart(); doStart();
} }
@@ -441,7 +443,8 @@ void ProcessLauncherImpl::doStart()
p.arguments = m_arguments; p.arguments = m_arguments;
p.env = m_environment.toStringList(); p.env = m_environment.toStringList();
p.workingDir = m_workingDirectory; p.workingDir = m_workingDirectory;
p.mode = m_channelMode; p.openMode = m_openMode;
p.channelMode = m_channelMode;
sendPacket(p); sendPacket(p);
} }

View File

@@ -230,8 +230,8 @@ void LauncherSocketHandler::handleStartPacket()
m_packetParser.packetData()); m_packetParser.packetData());
process->setEnvironment(packet.env); process->setEnvironment(packet.env);
process->setWorkingDirectory(packet.workingDir); process->setWorkingDirectory(packet.workingDir);
process->setProcessChannelMode(packet.mode); process->setProcessChannelMode(packet.channelMode);
process->start(packet.command, packet.arguments); process->start(packet.command, packet.arguments, packet.openMode);
process->closeWriteChannel(); process->closeWriteChannel();
} }