From 88476a1435a5bc504929061bd0fa7d2c663d9bc7 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Fri, 15 Apr 2016 17:58:32 +0200 Subject: [PATCH] QmlProfiler: Disable run controls after they are finished Disabled runControls would still receive and send signals, confusing the profiler state. Also, connect lambdas with receiver argument where possible. Change-Id: I0cd43456d3462efe402e9d68792b67314e9b6e0b Task-number: QTCREATORBUG-16073 Reviewed-by: Joerg Bornemann --- src/plugins/qmlprofiler/qmlprofilerruncontrol.cpp | 2 +- src/plugins/qmlprofiler/qmlprofilertool.cpp | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/plugins/qmlprofiler/qmlprofilerruncontrol.cpp b/src/plugins/qmlprofiler/qmlprofilerruncontrol.cpp index ec78fe1c758..2443e2eb382 100644 --- a/src/plugins/qmlprofiler/qmlprofilerruncontrol.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerruncontrol.cpp @@ -101,7 +101,7 @@ QmlProfilerRunControl::QmlProfilerRunControl(RunConfiguration *runConfiguration, QmlProfilerRunControl::~QmlProfilerRunControl() { - if (d->m_profilerState) + if (d->m_running && d->m_profilerState) stop(); delete d; } diff --git a/src/plugins/qmlprofiler/qmlprofilertool.cpp b/src/plugins/qmlprofiler/qmlprofilertool.cpp index e4d04b86561..02410623ecb 100644 --- a/src/plugins/qmlprofiler/qmlprofilertool.cpp +++ b/src/plugins/qmlprofiler/qmlprofilertool.cpp @@ -333,12 +333,13 @@ AnalyzerRunControl *QmlProfilerTool::createRunControl(RunConfiguration *runConfi } auto runControl = new QmlProfilerRunControl(runConfiguration, this); - connect(runControl, &RunControl::finished, [this, runControl] { + connect(runControl, &RunControl::finished, this, [this, runControl] { d->m_toolBusy = false; updateRunActions(); + disconnect(d->m_stopAction, &QAction::triggered, runControl, &QmlProfilerRunControl::stop); }); - connect(d->m_stopAction, &QAction::triggered, runControl, [runControl] { runControl->stop(); }); + connect(d->m_stopAction, &QAction::triggered, runControl, &QmlProfilerRunControl::stop); updateRunActions(); return runControl;