forked from qt-creator/qt-creator
Utils: Work around readAllStandardError() with QProcess::MergedChannels
Instead of relying QProcess to operate with MergedChannels, keep the separate channels and merge inside QtcProcess. Fixes: QTCREATORBUG-27196 Change-Id: I3039267fcd6d90f95f8212642e17049b87af1156 Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
@@ -222,6 +222,12 @@ void CallerHandle::handleStarted(const StartedSignal *launcherSignal)
|
||||
void CallerHandle::handleReadyRead(const ReadyReadSignal *launcherSignal)
|
||||
{
|
||||
QTC_ASSERT(isCalledFromCallersThread(), return);
|
||||
if (m_setup->m_processChannelMode == QProcess::MergedChannels) {
|
||||
m_stdout += launcherSignal->stdOut();
|
||||
m_stdout += launcherSignal->stdErr();
|
||||
if (!m_stdout.isEmpty())
|
||||
emit readyReadStandardOutput();
|
||||
} else {
|
||||
if (m_setup->m_processChannelMode == QProcess::ForwardedOutputChannel
|
||||
|| m_setup->m_processChannelMode == QProcess::ForwardedChannels) {
|
||||
std::cout << launcherSignal->stdOut().constData() << std::flush;
|
||||
@@ -239,6 +245,7 @@ void CallerHandle::handleReadyRead(const ReadyReadSignal *launcherSignal)
|
||||
emit readyReadStandardError();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CallerHandle::handleFinished(const FinishedSignal *launcherSignal)
|
||||
{
|
||||
|
@@ -205,8 +205,6 @@ void LauncherSocketHandler::handleStartPacket()
|
||||
process->setEnvironment(packet.env);
|
||||
process->setWorkingDirectory(packet.workingDir);
|
||||
// Forwarding is handled by the LauncherInterface
|
||||
process->setProcessChannelMode(packet.processChannelMode == QProcess::MergedChannels
|
||||
? QProcess::MergedChannels : QProcess::SeparateChannels);
|
||||
process->setStandardInputFile(packet.standardInputFile);
|
||||
ProcessStartHandler *handler = process->processStartHandler();
|
||||
handler->setProcessMode(packet.processMode);
|
||||
|
Reference in New Issue
Block a user