AndroidRunner: Handle incomplete lines better

Task-number: QTCREATORBUG-11472
Change-Id: If2479d3ccb85857a8775894b1f4088702578ecba
Reviewed-by: jian liang <jianliang79@gmail.com>
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
This commit is contained in:
Daniel Teske
2014-02-13 12:55:19 +01:00
parent 497b2ae45d
commit 30caf88a58

View File

@@ -358,11 +358,19 @@ void AndroidRunner::logcatReadStandardError()
void AndroidRunner::logcatReadStandardOutput() void AndroidRunner::logcatReadStandardOutput()
{ {
m_logcat += m_adbLogcatProcess.readAllStandardOutput(); QList<QByteArray> lines = m_adbLogcatProcess.readAllStandardOutput().split('\n');
bool keepLastLine = m_logcat.endsWith('\n'); // lines always contains at least one item
QByteArray line; lines[0].prepend(m_logcat);
if (!lines.last().endsWith('\n')) {
// incomplete line
m_logcat = lines.last();
lines.removeLast();
} else {
m_logcat.clear();
}
QByteArray pid(QString::fromLatin1("%1):").arg(m_processPID).toLatin1()); QByteArray pid(QString::fromLatin1("%1):").arg(m_processPID).toLatin1());
foreach (line, m_logcat.split('\n')) { foreach (QByteArray line, lines) {
if (!line.contains(pid)) if (!line.contains(pid))
continue; continue;
if (line.endsWith('\r')) if (line.endsWith('\r'))
@@ -376,8 +384,6 @@ void AndroidRunner::logcatReadStandardOutput()
emit remoteOutput(line); emit remoteOutput(line);
} }
if (keepLastLine)
m_logcat = line;
} }
void AndroidRunner::adbKill(qint64 pid) void AndroidRunner::adbKill(qint64 pid)