diff --git a/src/plugins/android/androidrunner.cpp b/src/plugins/android/androidrunner.cpp index d92cc7eb043d0ef8ec85162bf00391c9cf4307cc..cf047deceb399a51aceeb15c8cb7894937b8ff19 100644 --- a/src/plugins/android/androidrunner.cpp +++ b/src/plugins/android/androidrunner.cpp @@ -351,24 +351,17 @@ void AndroidRunner::stop() m_adbLogcatProcess.waitForFinished(); } -void AndroidRunner::logcatReadStandardError() +void AndroidRunner::logcatProcess(const QByteArray &text, QByteArray &buffer, bool onlyError) { - emit remoteErrorOutput(m_adbLogcatProcess.readAllStandardError()); -} - -void AndroidRunner::logcatReadStandardOutput() -{ - if (m_processPID == -1) - return; - QList<QByteArray> lines = m_adbLogcatProcess.readAllStandardOutput().split('\n'); + QList<QByteArray> lines = text.split('\n'); // lines always contains at least one item - lines[0].prepend(m_logcat); + lines[0].prepend(buffer); if (!lines.last().endsWith('\n')) { // incomplete line - m_logcat = lines.last(); + buffer = lines.last(); lines.removeLast(); } else { - m_logcat.clear(); + buffer.clear(); } QByteArray pid(QString::fromLatin1("%1):").arg(m_processPID).toLatin1()); @@ -378,7 +371,7 @@ void AndroidRunner::logcatReadStandardOutput() if (line.endsWith('\r')) line.chop(1); line.append('\n'); - if (line.startsWith("E/") + if (onlyError || line.startsWith("E/") || line.startsWith("D/Qt") || line.startsWith("W/")) emit remoteErrorOutput(line); @@ -388,6 +381,18 @@ void AndroidRunner::logcatReadStandardOutput() } } +void AndroidRunner::logcatReadStandardError() +{ + if (m_processPID != -1) + logcatProcess(m_adbLogcatProcess.readAllStandardError(), m_stderrBuffer, true); +} + +void AndroidRunner::logcatReadStandardOutput() +{ + if (m_processPID != -1) + logcatProcess(m_adbLogcatProcess.readAllStandardOutput(), m_stdoutBuffer, false); +} + void AndroidRunner::adbKill(qint64 pid) { { diff --git a/src/plugins/android/androidrunner.h b/src/plugins/android/androidrunner.h index b18aee29d2f309a818df7b5ef639470d06257dbd..a42034b5574a4e1dbdf8a812281e1c37174e1978 100644 --- a/src/plugins/android/androidrunner.h +++ b/src/plugins/android/androidrunner.h @@ -82,6 +82,7 @@ private: void forceStop(); QByteArray runPs(); void findPs(); + void logcatProcess(const QByteArray &text, QByteArray &buffer, bool onlyError); private: QProcess m_adbLogcatProcess; @@ -89,7 +90,8 @@ private: bool m_wasStarted; int m_tries; - QByteArray m_logcat; + QByteArray m_stdoutBuffer; + QByteArray m_stderrBuffer; QString m_intentName; QString m_packageName; QString m_deviceSerialNumber;