diff --git a/src/libs/utils/processinterface.h b/src/libs/utils/processinterface.h index 83344c131e5..799193b3b83 100644 --- a/src/libs/utils/processinterface.h +++ b/src/libs/utils/processinterface.h @@ -35,6 +35,8 @@ namespace Utils { +namespace Internal { class QtcProcessPrivate; } + class QTCREATOR_UTILS_EXPORT ProcessSetupData { public: @@ -121,6 +123,7 @@ private: virtual bool waitForFinished(int msecs) = 0; friend class QtcProcess; + friend class Internal::QtcProcessPrivate; }; } // namespace Utils diff --git a/src/libs/utils/qtcprocess.cpp b/src/libs/utils/qtcprocess.cpp index a4c615f37c4..1b4820c5758 100644 --- a/src/libs/utils/qtcprocess.cpp +++ b/src/libs/utils/qtcprocess.cpp @@ -1142,9 +1142,13 @@ qint64 QtcProcess::applicationMainThreadId() const return d->m_applicationMainThreadId; } +QProcess::ProcessChannelMode QtcProcess::processChannelMode() const +{ + return d->m_setup.m_processChannelMode; +} + void QtcProcess::setProcessChannelMode(QProcess::ProcessChannelMode mode) { - QTC_CHECK(state() == QProcess::NotRunning); d->m_setup.m_processChannelMode = mode; } @@ -1569,16 +1573,16 @@ 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_setup.m_processChannelMode == QProcess::ForwardedOutputChannel - || m_setup.m_processChannelMode == QProcess::ForwardedChannels) { + 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()) emitReadyReadStandardOutput(); } - if (m_setup.m_processChannelMode == QProcess::ForwardedErrorChannel - || m_setup.m_processChannelMode == QProcess::ForwardedChannels) { + 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); diff --git a/src/libs/utils/qtcprocess.h b/src/libs/utils/qtcprocess.h index 1852d7c6ce2..976e0ad4024 100644 --- a/src/libs/utils/qtcprocess.h +++ b/src/libs/utils/qtcprocess.h @@ -121,6 +121,7 @@ public: bool isRunAsRoot() const; void setAbortOnMetaChars(bool abort); + QProcess::ProcessChannelMode processChannelMode() const; void setProcessChannelMode(QProcess::ProcessChannelMode mode); void setStandardInputFile(const QString &inputFile);