forked from qt-creator/qt-creator
AndroidRunnerWorker: Replace adbLogcat process with Utils::Process
Change-Id: Ia4e0e7e0b49ca1847bac537a7672c39b069bf767 Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
@@ -215,7 +215,6 @@ static FilePath debugServer(bool useLldb, const Target *target)
|
|||||||
|
|
||||||
AndroidRunnerWorker::AndroidRunnerWorker(RunWorker *runner, const QString &packageName)
|
AndroidRunnerWorker::AndroidRunnerWorker(RunWorker *runner, const QString &packageName)
|
||||||
: m_packageName(packageName)
|
: m_packageName(packageName)
|
||||||
, m_adbLogcatProcess(nullptr, deleter)
|
|
||||||
, m_psIsAlive(nullptr, deleter)
|
, m_psIsAlive(nullptr, deleter)
|
||||||
, m_debugServerProcess(nullptr, deleter)
|
, m_debugServerProcess(nullptr, deleter)
|
||||||
, m_jdbProcess(nullptr, deleter)
|
, m_jdbProcess(nullptr, deleter)
|
||||||
@@ -406,13 +405,13 @@ void AndroidRunnerWorker::forceStop()
|
|||||||
void AndroidRunnerWorker::logcatReadStandardError()
|
void AndroidRunnerWorker::logcatReadStandardError()
|
||||||
{
|
{
|
||||||
if (m_processPID != -1)
|
if (m_processPID != -1)
|
||||||
logcatProcess(m_adbLogcatProcess->readAllStandardError(), m_stderrBuffer, true);
|
logcatProcess(m_adbLogcatProcess->readAllRawStandardError(), m_stderrBuffer, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AndroidRunnerWorker::logcatReadStandardOutput()
|
void AndroidRunnerWorker::logcatReadStandardOutput()
|
||||||
{
|
{
|
||||||
if (m_processPID != -1)
|
if (m_processPID != -1)
|
||||||
logcatProcess(m_adbLogcatProcess->readAllStandardOutput(), m_stdoutBuffer, false);
|
logcatProcess(m_adbLogcatProcess->readAllRawStandardOutput(), m_stdoutBuffer, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AndroidRunnerWorker::logcatProcess(const QByteArray &text, QByteArray &buffer, bool onlyError)
|
void AndroidRunnerWorker::logcatProcess(const QByteArray &text, QByteArray &buffer, bool onlyError)
|
||||||
@@ -504,16 +503,16 @@ void Android::Internal::AndroidRunnerWorker::asyncStartLogcat()
|
|||||||
{
|
{
|
||||||
// Its assumed that the device or avd returned by selector() is online.
|
// Its assumed that the device or avd returned by selector() is online.
|
||||||
// Start the logcat process before app starts.
|
// Start the logcat process before app starts.
|
||||||
QTC_ASSERT(!m_adbLogcatProcess, /**/);
|
QTC_CHECK(!m_adbLogcatProcess);
|
||||||
|
|
||||||
// Ideally AndroidManager::runAdbCommandDetached() should be used, but here
|
// Ideally AndroidManager::runAdbCommandDetached() should be used, but here
|
||||||
// we need to connect the readyRead signals from logcat otherwise we might
|
// we need to connect the readyRead signals from logcat otherwise we might
|
||||||
// lost some output between the process start and connecting those signals.
|
// lost some output between the process start and connecting those signals.
|
||||||
m_adbLogcatProcess.reset(new QProcess());
|
m_adbLogcatProcess.reset(new Process);
|
||||||
|
|
||||||
connect(m_adbLogcatProcess.get(), &QProcess::readyReadStandardOutput,
|
connect(m_adbLogcatProcess.get(), &Process::readyReadStandardOutput,
|
||||||
this, &AndroidRunnerWorker::logcatReadStandardOutput);
|
this, &AndroidRunnerWorker::logcatReadStandardOutput);
|
||||||
connect(m_adbLogcatProcess.get(), &QProcess::readyReadStandardError,
|
connect(m_adbLogcatProcess.get(), &Process::readyReadStandardError,
|
||||||
this, &AndroidRunnerWorker::logcatReadStandardError);
|
this, &AndroidRunnerWorker::logcatReadStandardError);
|
||||||
|
|
||||||
// Get target current time to fetch only recent logs
|
// Get target current time to fetch only recent logs
|
||||||
@@ -529,7 +528,8 @@ void Android::Internal::AndroidRunnerWorker::asyncStartLogcat()
|
|||||||
const FilePath adb = AndroidConfigurations::currentConfig().adbToolPath();
|
const FilePath adb = AndroidConfigurations::currentConfig().adbToolPath();
|
||||||
qCDebug(androidRunWorkerLog).noquote() << "Running logcat command (async):"
|
qCDebug(androidRunWorkerLog).noquote() << "Running logcat command (async):"
|
||||||
<< CommandLine(adb, logcatArgs).toUserOutput();
|
<< CommandLine(adb, logcatArgs).toUserOutput();
|
||||||
m_adbLogcatProcess->start(adb.toString(), logcatArgs);
|
m_adbLogcatProcess->setCommand({adb, logcatArgs});
|
||||||
|
m_adbLogcatProcess->start();
|
||||||
if (m_adbLogcatProcess->waitForStarted(500) && m_adbLogcatProcess->state() == QProcess::Running)
|
if (m_adbLogcatProcess->waitForStarted(500) && m_adbLogcatProcess->state() == QProcess::Running)
|
||||||
m_adbLogcatProcess->setObjectName("AdbLogcatProcess");
|
m_adbLogcatProcess->setObjectName("AdbLogcatProcess");
|
||||||
}
|
}
|
||||||
|
@@ -16,7 +16,10 @@ QT_BEGIN_NAMESPACE
|
|||||||
class QProcess;
|
class QProcess;
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
namespace Utils { class FilePath; }
|
namespace Utils {
|
||||||
|
class FilePath;
|
||||||
|
class Process;
|
||||||
|
}
|
||||||
namespace ProjectExplorer { class RunWorker; }
|
namespace ProjectExplorer { class RunWorker; }
|
||||||
|
|
||||||
namespace Android {
|
namespace Android {
|
||||||
@@ -88,7 +91,7 @@ private:
|
|||||||
QStringList m_amStartExtraArgs;
|
QStringList m_amStartExtraArgs;
|
||||||
qint64 m_processPID = -1;
|
qint64 m_processPID = -1;
|
||||||
qint64 m_processUser = -1;
|
qint64 m_processUser = -1;
|
||||||
std::unique_ptr<QProcess, Deleter> m_adbLogcatProcess;
|
std::unique_ptr<Utils::Process> m_adbLogcatProcess;
|
||||||
std::unique_ptr<QProcess, Deleter> m_psIsAlive;
|
std::unique_ptr<QProcess, Deleter> m_psIsAlive;
|
||||||
QByteArray m_stdoutBuffer;
|
QByteArray m_stdoutBuffer;
|
||||||
QByteArray m_stderrBuffer;
|
QByteArray m_stderrBuffer;
|
||||||
|
Reference in New Issue
Block a user