forked from qt-creator/qt-creator
Support ProcessChannelMode in ProcessLauncherImpl
Change-Id: Ifb919f19aac8ad223e6beb93c4c14fa4fdb204e9 Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -58,12 +58,12 @@ StartProcessPacket::StartProcessPacket(quintptr token)
|
||||
|
||||
void StartProcessPacket::doSerialize(QDataStream &stream) const
|
||||
{
|
||||
stream << command << arguments << workingDir << env;
|
||||
stream << command << arguments << workingDir << env << mode;
|
||||
}
|
||||
|
||||
void StartProcessPacket::doDeserialize(QDataStream &stream)
|
||||
{
|
||||
stream >> command >> arguments >> workingDir >> env;
|
||||
stream >> command >> arguments >> workingDir >> env >> mode;
|
||||
}
|
||||
|
||||
|
||||
|
@@ -99,6 +99,7 @@ public:
|
||||
QStringList arguments;
|
||||
QString workingDir;
|
||||
QStringList env;
|
||||
QProcess::ProcessChannelMode mode = QProcess::SeparateChannels;
|
||||
|
||||
private:
|
||||
void doSerialize(QDataStream &stream) const override;
|
||||
|
@@ -302,7 +302,13 @@ public:
|
||||
void closeWriteChannel() override { QTC_CHECK(false); }
|
||||
|
||||
void setStandardInputFile(const QString &fileName) override { QTC_CHECK(false); }
|
||||
void setProcessChannelMode(QProcess::ProcessChannelMode mode) override { QTC_CHECK(false); }
|
||||
void setProcessChannelMode(QProcess::ProcessChannelMode mode) override {
|
||||
if (mode != QProcess::SeparateChannels && mode != QProcess::MergedChannels) {
|
||||
qWarning("setProcessChannelMode: The only supported modes are SeparateChannels and MergedChannels.");
|
||||
return;
|
||||
}
|
||||
m_channelMode = mode;
|
||||
}
|
||||
|
||||
qint64 bytesAvailable() const override { QTC_CHECK(false); return 0; }
|
||||
QString program() const override { return m_command; }
|
||||
@@ -359,6 +365,7 @@ private:
|
||||
QString m_errorString;
|
||||
QProcess::ProcessError m_error = QProcess::UnknownError;
|
||||
QProcess::ProcessState m_state = QProcess::NotRunning;
|
||||
QProcess::ProcessChannelMode m_channelMode = QProcess::SeparateChannels;
|
||||
int m_exitCode = 0;
|
||||
bool m_canceled = false;
|
||||
bool m_socketError = false;
|
||||
@@ -388,6 +395,7 @@ void ProcessLauncherImpl::doStart()
|
||||
p.arguments = m_arguments;
|
||||
p.env = m_environment.toStringList();
|
||||
p.workingDir = m_workingDirectory;
|
||||
p.mode = m_channelMode;
|
||||
sendPacket(p);
|
||||
}
|
||||
|
||||
|
@@ -222,6 +222,7 @@ void LauncherSocketHandler::handleStartPacket()
|
||||
m_packetParser.packetData());
|
||||
process->setEnvironment(packet.env);
|
||||
process->setWorkingDirectory(packet.workingDir);
|
||||
process->setProcessChannelMode(packet.mode);
|
||||
process->start(packet.command, packet.arguments);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user