diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2022-06-23 11:22:30 +0200 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@qt.io> | 2022-06-24 09:41:10 +0000 |
commit | 9fde8511e26edce60e3fc58212a7bf3c576f9518 (patch) | |
tree | 939d61a8c0a7ed3260419ec94af583658af7c856 | |
parent | 44aea533f86f10f28ba9704713442cc1d0f15d20 (diff) |
QtcProcess: Be idle when incoming data is empty
Don't forward and flush empty data
Change-Id: Idb153695d7eb62905c000b70efdfb0c68f0df9ad
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
-rw-r--r-- | src/libs/utils/qtcprocess.cpp | 27 |
1 files 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(); + } } } |