QmlProfiler: Simplify QmlProfilerRunner

Remove registerProfilerStateManager() and connect to
state manager's signal directly from the start() function.

Remove Q_OBJECT macro.

Change-Id: Id03486f077c81909fbe0889bb342ee7595631e9d
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Jarek Kobus
2025-01-03 15:33:53 +01:00
parent 49a66abf1f
commit da475f400d
3 changed files with 13 additions and 40 deletions

View File

@@ -3,6 +3,7 @@
#include "qmlprofilerruncontrol.h" #include "qmlprofilerruncontrol.h"
#include "qmlprofilerstatemanager.h"
#include "qmlprofilertool.h" #include "qmlprofilertool.h"
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
@@ -23,8 +24,6 @@
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/url.h> #include <utils/url.h>
#include <QMessageBox>
using namespace Core; using namespace Core;
using namespace ProjectExplorer; using namespace ProjectExplorer;
@@ -61,9 +60,17 @@ QmlProfilerRunner::~QmlProfilerRunner()
void QmlProfilerRunner::start() void QmlProfilerRunner::start()
{ {
if (!d->m_profilerState) if (d->m_profilerState)
disconnect(d->m_profilerState, &QmlProfilerStateManager::stateChanged, this, nullptr);
QmlProfilerTool::instance()->finalizeRunControl(this); QmlProfilerTool::instance()->finalizeRunControl(this);
d->m_profilerState = QmlProfilerTool::instance()->stateManager();
QTC_ASSERT(d->m_profilerState, return); QTC_ASSERT(d->m_profilerState, return);
connect(d->m_profilerState, &QmlProfilerStateManager::stateChanged, this, [this] {
if (d->m_profilerState->currentState() == QmlProfilerStateManager::Idle)
reportStopped();
});
reportStarted(); reportStarted();
} }
@@ -116,32 +123,6 @@ void QmlProfilerRunner::cancelProcess()
runControl()->initiateStop(); runControl()->initiateStop();
} }
void QmlProfilerRunner::registerProfilerStateManager( QmlProfilerStateManager *profilerState )
{
// disconnect old
if (d->m_profilerState)
disconnect(d->m_profilerState, &QmlProfilerStateManager::stateChanged,
this, &QmlProfilerRunner::profilerStateChanged);
d->m_profilerState = profilerState;
// connect
if (d->m_profilerState)
connect(d->m_profilerState, &QmlProfilerStateManager::stateChanged,
this, &QmlProfilerRunner::profilerStateChanged);
}
void QmlProfilerRunner::profilerStateChanged()
{
switch (d->m_profilerState->currentState()) {
case QmlProfilerStateManager::Idle:
reportStopped();
break;
default:
break;
}
}
RunWorker *createLocalQmlProfilerWorker(RunControl *runControl) RunWorker *createLocalQmlProfilerWorker(RunControl *runControl)
{ {
auto worker = new ProcessRunner(runControl); auto worker = new ProcessRunner(runControl);

View File

@@ -3,8 +3,6 @@
#pragma once #pragma once
#include "qmlprofilerstatemanager.h"
#include <projectexplorer/runcontrol.h> #include <projectexplorer/runcontrol.h>
#include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/projectexplorerconstants.h>
@@ -18,21 +16,16 @@ namespace Internal {
class QmlProfilerRunner : public ProjectExplorer::RunWorker class QmlProfilerRunner : public ProjectExplorer::RunWorker
{ {
Q_OBJECT
public: public:
QmlProfilerRunner(ProjectExplorer::RunControl *runControl); QmlProfilerRunner(ProjectExplorer::RunControl *runControl);
~QmlProfilerRunner() override; ~QmlProfilerRunner() override;
void registerProfilerStateManager( QmlProfilerStateManager *profilerState );
void cancelProcess(); void cancelProcess();
private: private:
void start() override; void start() override;
void stop() override; void stop() override;
void profilerStateChanged();
class QmlProfilerRunnerPrivate; class QmlProfilerRunnerPrivate;
QmlProfilerRunnerPrivate *d; QmlProfilerRunnerPrivate *d;
}; };

View File

@@ -178,7 +178,7 @@ QmlProfilerTool::QmlProfilerTool()
d->m_clearButton->setIcon(Utils::Icons::CLEAN_TOOLBAR.icon()); d->m_clearButton->setIcon(Utils::Icons::CLEAN_TOOLBAR.icon());
d->m_clearButton->setToolTip(Tr::tr("Discard data")); d->m_clearButton->setToolTip(Tr::tr("Discard data"));
connect(d->m_clearButton, &QAbstractButton::clicked, [this](){ connect(d->m_clearButton, &QAbstractButton::clicked, [this] {
if (checkForUnsavedNotes()) if (checkForUnsavedNotes())
clearData(); clearData();
}); });
@@ -382,7 +382,6 @@ void QmlProfilerTool::finalizeRunControl(QmlProfilerRunner *runWorker)
connect(d->m_stopAction, &QAction::triggered, runControl, &RunControl::initiateStop); connect(d->m_stopAction, &QAction::triggered, runControl, &RunControl::initiateStop);
updateRunActions(); updateRunActions();
runWorker->registerProfilerStateManager(d->m_profilerState);
// //
// Initialize m_projectFinder // Initialize m_projectFinder
@@ -391,7 +390,7 @@ void QmlProfilerTool::finalizeRunControl(QmlProfilerRunner *runWorker)
d->m_profilerModelManager->populateFileFinder(runControl->target()); d->m_profilerModelManager->populateFileFinder(runControl->target());
connect(d->m_profilerConnections, &QmlProfilerClientManager::connectionFailed, connect(d->m_profilerConnections, &QmlProfilerClientManager::connectionFailed,
runWorker, [this, runWorker]() { runWorker, [this, runWorker] {
auto infoBox = new QMessageBox(ICore::dialogParent()); auto infoBox = new QMessageBox(ICore::dialogParent());
infoBox->setIcon(QMessageBox::Critical); infoBox->setIcon(QMessageBox::Critical);
infoBox->setWindowTitle(QGuiApplication::applicationDisplayName()); infoBox->setWindowTitle(QGuiApplication::applicationDisplayName());