From 9fde8511e26edce60e3fc58212a7bf3c576f9518 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Thu, 23 Jun 2022 11:22:30 +0200 Subject: [PATCH] QtcProcess: Be idle when incoming data is empty Don't forward and flush empty data Change-Id: Idb153695d7eb62905c000b70efdfb0c68f0df9ad Reviewed-by: hjk Reviewed-by: --- src/libs/utils/qtcprocess.cpp | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/libs/utils/qtcprocess.cpp b/src/libs/utils/qtcprocess.cpp index 18283cc3a08..b05e6bc5fee 100644 --- a/src/libs/utils/qtcprocess.cpp +++ b/src/libs/utils/qtcprocess.cpp @@ -1983,21 +1983,24 @@ void QtcProcessPrivate::handleReadyRead(const QByteArray &outputData, const QByt m_hangTimerCount = 0; // TODO: store a copy of m_processChannelMode on start()? Currently we assert that state // is NotRunning when setting the process channel mode. - if (m_process->m_setup.m_processChannelMode == QProcess::ForwardedOutputChannel - || m_process->m_setup.m_processChannelMode == QProcess::ForwardedChannels) { - std::cout << outputData.constData() << std::flush; - } else { - m_stdOut.append(outputData); - if (!outputData.isEmpty()) + + if (!outputData.isEmpty()) { + if (m_process->m_setup.m_processChannelMode == QProcess::ForwardedOutputChannel + || m_process->m_setup.m_processChannelMode == QProcess::ForwardedChannels) { + std::cout << outputData.constData() << std::flush; + } else { + m_stdOut.append(outputData); emitReadyReadStandardOutput(); + } } - if (m_process->m_setup.m_processChannelMode == QProcess::ForwardedErrorChannel - || m_process->m_setup.m_processChannelMode == QProcess::ForwardedChannels) { - std::cerr << errorData.constData() << std::flush; - } else { - m_stdErr.append(errorData); - if (!errorData.isEmpty()) + if (!errorData.isEmpty()) { + if (m_process->m_setup.m_processChannelMode == QProcess::ForwardedErrorChannel + || m_process->m_setup.m_processChannelMode == QProcess::ForwardedChannels) { + std::cerr << errorData.constData() << std::flush; + } else { + m_stdErr.append(errorData); emitReadyReadStandardError(); + } } }