From fb84bcb4871d28104f70416c8a97ebb738d62263 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Fri, 2 Feb 2018 13:24:44 +0100 Subject: qmlprofiler tool: In attach mode, finish when connection drops We won't have a process that terminates in this case and we don't want to wait forever. Task-number: QTBUG-66159 Change-Id: I5d0bbe2f8bc9c7cbc8732272ccca779d5f9bcc7d Reviewed-by: Simon Hausmann --- tools/qmlprofiler/qmlprofilerapplication.cpp | 18 ++++++++++++++++++ tools/qmlprofiler/qmlprofilerapplication.h | 1 + 2 files changed, 19 insertions(+) (limited to 'tools/qmlprofiler') diff --git a/tools/qmlprofiler/qmlprofilerapplication.cpp b/tools/qmlprofiler/qmlprofilerapplication.cpp index 033492b516..33be8722c0 100644 --- a/tools/qmlprofiler/qmlprofilerapplication.cpp +++ b/tools/qmlprofiler/qmlprofilerapplication.cpp @@ -91,6 +91,8 @@ QmlProfilerApplication::QmlProfilerApplication(int &argc, char **argv) : connect(&m_connection, &QQmlDebugConnection::connected, this, &QmlProfilerApplication::connected); + connect(&m_connection, &QQmlDebugConnection::disconnected, + this, &QmlProfilerApplication::disconnected); connect(&m_qmlProfilerClient, &QmlProfilerClient::enabledChanged, this, &QmlProfilerApplication::traceClientEnabledChanged); @@ -512,6 +514,22 @@ void QmlProfilerApplication::connected() .arg(endpoint).arg(m_recording ? tr("on") : tr("off"))); } +void QmlProfilerApplication::disconnected() +{ + if (m_runMode == AttachMode) { + int exitCode = 0; + if (m_recording) { + logError("Connection dropped while recording, last trace is damaged!"); + exitCode = 2; + } + + if (!m_interactive ) + exit(exitCode); + else + m_qmlProfilerClient.clearPendingData(); + } +} + void QmlProfilerApplication::processHasOutput() { Q_ASSERT(m_process); diff --git a/tools/qmlprofiler/qmlprofilerapplication.h b/tools/qmlprofiler/qmlprofilerapplication.h index 13f0f041f0..4946622902 100644 --- a/tools/qmlprofiler/qmlprofilerapplication.h +++ b/tools/qmlprofiler/qmlprofilerapplication.h @@ -69,6 +69,7 @@ private: void run(); void tryToConnect(); void connected(); + void disconnected(); void processHasOutput(); void processFinished(); -- cgit v1.2.3