diff --git a/src/libs/qmldebug/qmldebugconnectionmanager.cpp b/src/libs/qmldebug/qmldebugconnectionmanager.cpp index 2901e21d9d0..02d9297cace 100644 --- a/src/libs/qmldebug/qmldebugconnectionmanager.cpp +++ b/src/libs/qmldebug/qmldebugconnectionmanager.cpp @@ -43,12 +43,6 @@ QmlDebugConnectionManager::~QmlDebugConnectionManager() disconnectConnectionSignals(); } -void QmlDebugConnectionManager::setRetryParams(int interval, int maxAttempts) -{ - m_retryInterval = interval; - m_maximumRetries = maxAttempts; -} - void QmlDebugConnectionManager::connectToServer(const QUrl &server) { if (m_server != server) { diff --git a/src/libs/qmldebug/qmldebugconnectionmanager.h b/src/libs/qmldebug/qmldebugconnectionmanager.h index 2bab6b082c0..ccda63f38fa 100644 --- a/src/libs/qmldebug/qmldebugconnectionmanager.h +++ b/src/libs/qmldebug/qmldebugconnectionmanager.h @@ -47,7 +47,12 @@ public: bool isConnecting() const; bool isConnected() const; - void setRetryParams(int interval, int maxAttempts); + int retryInterval() const { return m_retryInterval; } + void setRetryInterval(int retryInterval) { m_retryInterval = retryInterval; } + + int maximumRetries() const { return m_maximumRetries; } + void setMaximumRetries(int maximumRetries) { m_maximumRetries = maximumRetries; } + void retryConnect(); signals: @@ -71,7 +76,7 @@ private: QUrl m_server; int m_retryInterval = 200; - int m_maximumRetries = 50; + int m_maximumRetries = 10; int m_numRetries = 0; void createConnection(); diff --git a/src/plugins/qmlprofiler/qmlprofilertool.cpp b/src/plugins/qmlprofiler/qmlprofilertool.cpp index dd8605a2d2c..e78858f2bd2 100644 --- a/src/plugins/qmlprofiler/qmlprofilertool.cpp +++ b/src/plugins/qmlprofiler/qmlprofilertool.cpp @@ -348,15 +348,23 @@ void QmlProfilerTool::finalizeRunControl(QmlProfilerRunner *runWorker) QMessageBox *infoBox = new QMessageBox(ICore::mainWindow()); infoBox->setIcon(QMessageBox::Critical); infoBox->setWindowTitle(Core::Constants::IDE_DISPLAY_NAME); - infoBox->setText(QmlProfilerTool::tr("Could not connect to the in-process QML profiler.\n" - "Do you want to retry?")); + + const int interval = d->m_profilerConnections->retryInterval(); + const int retries = d->m_profilerConnections->maximumRetries(); + + infoBox->setText(QmlProfilerTool::tr("Could not connect to the in-process QML profiler " + "within %1 s.\n" + "Do you want to retry and wait %2 s?") + .arg(interval * retries / 1000.0) + .arg(interval * 2 * retries / 1000.0)); infoBox->setStandardButtons(QMessageBox::Retry | QMessageBox::Cancel | QMessageBox::Help); infoBox->setDefaultButton(QMessageBox::Retry); infoBox->setModal(true); - connect(infoBox, &QDialog::finished, runWorker, [this, runWorker](int result) { + connect(infoBox, &QDialog::finished, runWorker, [this, runWorker, interval](int result) { switch (result) { case QMessageBox::Retry: + d->m_profilerConnections->setRetryInterval(interval * 2); d->m_profilerConnections->retryConnect(); break; case QMessageBox::Help: diff --git a/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.cpp b/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.cpp index e565619de1a..70b815776b0 100644 --- a/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.cpp +++ b/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.cpp @@ -60,7 +60,8 @@ QtMessageHandler MessageHandler::defaultHandler; QmlProfilerClientManagerTest::QmlProfilerClientManagerTest(QObject *parent) : QObject(parent), modelManager(nullptr) { - clientManager.setRetryParams(10, 10); + clientManager.setRetryInterval(10); + clientManager.setMaximumRetries(10); } void QmlProfilerClientManagerTest::testConnectionFailure_data() @@ -115,7 +116,8 @@ void softAssertMessageHandler(QtMsgType type, const QMessageLogContext &context, void QmlProfilerClientManagerTest::testConnectionFailure() { - clientManager.setRetryParams(1, 2); + clientManager.setRetryInterval(1); + clientManager.setMaximumRetries(2); // This triggers a lot of soft asserts. We test that it still doesn't crash and stays in a // consistent state. QByteArray fatalAsserts = qgetenv("QTC_FATAL_ASSERTS"); @@ -153,7 +155,8 @@ void QmlProfilerClientManagerTest::testConnectionFailure() clientManager.disconnectFromServer(); qputenv("QTC_FATAL_ASSERTS", fatalAsserts); - clientManager.setRetryParams(10, 10); + clientManager.setRetryInterval(10); + clientManager.setMaximumRetries(10); } void QmlProfilerClientManagerTest::testUnresponsiveTcp() @@ -384,7 +387,8 @@ void QmlProfilerClientManagerTest::testStopRecording() { QmlProfilerClientManager clientManager; - clientManager.setRetryParams(10, 10); + clientManager.setRetryInterval(10); + clientManager.setMaximumRetries(10); QSignalSpy openedSpy(&clientManager, SIGNAL(connectionOpened())); QSignalSpy closedSpy(&clientManager, SIGNAL(connectionClosed())); @@ -420,7 +424,8 @@ void QmlProfilerClientManagerTest::testConnectionDrop() QmlProfilerClientManager clientManager; { - clientManager.setRetryParams(10, 10); + clientManager.setRetryInterval(10); + clientManager.setMaximumRetries(10); clientManager.setProfilerStateManager(&stateManager); clientManager.setModelManager(&modelManager); clientManager.connectToServer(socketUrl);