From 5bb462e070c4f66ea0e250ae02b1948a4859a852 Mon Sep 17 00:00:00 2001 From: Assam Boudjelthia Date: Thu, 9 Jul 2020 14:12:50 +0300 Subject: [PATCH] Android: fix app logcat not always displayed Fixes: QTCREATORBUG-23919 Fixes: QTCREATORBUG-23177 Task-number: QTCREATORBUG-23291 Change-Id: Ib053a15f2fd8e491a581268f3630725593186a47 Reviewed-by: BogDan Vatra --- src/plugins/android/androidrunnerworker.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/plugins/android/androidrunnerworker.cpp b/src/plugins/android/androidrunnerworker.cpp index b6bb03aea3a..5496dbc6a82 100644 --- a/src/plugins/android/androidrunnerworker.cpp +++ b/src/plugins/android/androidrunnerworker.cpp @@ -127,21 +127,23 @@ static void findProcessPID(QFutureInterface &fi, QStringList selector, if (packageName.isEmpty()) return; + QStringList args = {selector}; + FilePath adbPath = AndroidConfigurations::currentConfig().adbToolPath(); + args.append("shell"); + args.append(preNougat ? pidScriptPreNougat : pidScript.arg(packageName)); + qint64 processPID = -1; chrono::high_resolution_clock::time_point start = chrono::high_resolution_clock::now(); do { QThread::msleep(200); - FilePath adbPath = AndroidConfigurations::currentConfig().adbToolPath(); - selector.append("shell"); - selector.append(preNougat ? pidScriptPreNougat : pidScript.arg(packageName)); - const auto out = SynchronousProcess().runBlocking({adbPath, selector}).allRawOutput(); + const auto out = SynchronousProcess().runBlocking({adbPath, args}).allRawOutput(); if (preNougat) { processPID = extractPID(out, packageName); } else { if (!out.isEmpty()) processPID = out.trimmed().toLongLong(); } - } while (processPID == -1 && !isTimedOut(start) && !fi.isCanceled()); + } while ((processPID == -1 || processPID == 0) && !isTimedOut(start) && !fi.isCanceled()); qCDebug(androidRunWorkerLog) << "PID found:" << processPID << ", PreNougat:" << preNougat; if (!fi.isCanceled())