diff --git a/src/libs/qmldebug/qmldebugclient.cpp b/src/libs/qmldebug/qmldebugclient.cpp index 1a084122144..d0f4782eb2d 100644 --- a/src/libs/qmldebug/qmldebugclient.cpp +++ b/src/libs/qmldebug/qmldebugclient.cpp @@ -295,6 +295,11 @@ bool QmlDebugConnection::isOpen() const return d->gotHello; } +bool QmlDebugConnection::isConnecting() const +{ + return !isOpen() && d->device; +} + void QmlDebugConnection::close() { if (d->device && d->device->isOpen()) diff --git a/src/libs/qmldebug/qmldebugclient.h b/src/libs/qmldebug/qmldebugclient.h index ef1bad9671d..01c871ba09c 100644 --- a/src/libs/qmldebug/qmldebugclient.h +++ b/src/libs/qmldebug/qmldebugclient.h @@ -57,6 +57,7 @@ public: void connectToHost(const QString &hostName, quint16 port); bool isOpen() const; + bool isConnecting() const; void close(); signals: diff --git a/src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp b/src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp index 190fec5a5c1..c45a5a55817 100644 --- a/src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp @@ -215,7 +215,7 @@ void QmlProfilerClientManager::disconnectClientSignals() void QmlProfilerClientManager::connectToClient() { - if (!d->connection || d->connection->isOpen()) + if (!d->connection || d->connection->isOpen() || d->connection->isConnecting()) return; d->connection->connectToHost(d->tcpHost, d->tcpPort); @@ -290,6 +290,10 @@ void QmlProfilerClientManager::logState(const QString &msg) void QmlProfilerClientManager::retryMessageBoxFinished(int result) { + QTC_ASSERT(!d->connection->isOpen(), return); + if (d->connection->isConnecting()) + d->connection->disconnect(); + switch (result) { case QMessageBox::Retry: { d->connectionAttempts = 0;