aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2018-03-27 11:04:42 +0200
committerUlf Hermann <ulf.hermann@qt.io>2018-03-27 13:52:38 +0000
commit2ffd1a4f6baee12724de390606f6ea4ffd319def (patch)
tree70e8ac53bf83824dc6a03110d7573d991ebd9e49
parentcc6eef647302426ae6ef0759b9f59fd14e57bd1e (diff)
QML Tooling: Remember global "enabled" flag in profiler service
If profiling has been enabled for all engines, that now also holds for engines to be registered in the future. This way the client doesn't need to employ the EngineControl service just to figure out when the first engine registers. Change-Id: I44a441bb6ead25abdadac1ae3e4edf9b0a9659f5 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
-rw-r--r--src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.cpp12
-rw-r--r--src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.h3
2 files changed, 14 insertions, 1 deletions
diff --git a/src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.cpp b/src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.cpp
index eb6fbce101..e391abab1e 100644
--- a/src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.cpp
+++ b/src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.cpp
@@ -59,7 +59,7 @@ Q_QML_DEBUG_PLUGIN_LOADER(QQmlAbstractProfilerAdapter)
QQmlProfilerServiceImpl::QQmlProfilerServiceImpl(QObject *parent) :
QQmlConfigurableDebugService<QQmlProfilerService>(1, parent),
- m_waitingForStop(false), m_useMessageTypes(false)
+ m_waitingForStop(false), m_useMessageTypes(false), m_globalEnabled(false), m_globalFeatures(0)
{
m_timer.start();
QQmlAbstractProfilerAdapter *quickAdapter =
@@ -137,6 +137,10 @@ void QQmlProfilerServiceImpl::engineAdded(QJSEngine *engine)
"QML profilers have to be added from the engine thread");
QMutexLocker lock(&m_configMutex);
+
+ if (m_globalEnabled)
+ startProfiling(engine, m_globalFeatures);
+
const auto range = qAsConst(m_engineProfilers).equal_range(engine);
for (auto it = range.first; it != range.second; ++it)
(*it)->stopWaiting();
@@ -254,6 +258,9 @@ void QQmlProfilerServiceImpl::startProfiling(QJSEngine *engine, quint64 features
if (startedAny)
d << idForObject(engine);
} else {
+ m_globalEnabled = true;
+ m_globalFeatures = features;
+
QSet<QJSEngine *> engines;
for (QMultiHash<QJSEngine *, QQmlAbstractProfilerAdapter *>::iterator i(m_engineProfilers.begin());
i != m_engineProfilers.end(); ++i) {
@@ -292,6 +299,9 @@ void QQmlProfilerServiceImpl::stopProfiling(QJSEngine *engine)
QList<QQmlAbstractProfilerAdapter *> stopping;
QList<QQmlAbstractProfilerAdapter *> reporting;
+ if (engine == nullptr)
+ m_globalEnabled = false;
+
bool stillRunning = false;
for (QMultiHash<QJSEngine *, QQmlAbstractProfilerAdapter *>::iterator i(m_engineProfilers.begin());
i != m_engineProfilers.end(); ++i) {
diff --git a/src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.h b/src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.h
index a5e060a1ab..a8c3047421 100644
--- a/src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.h
+++ b/src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.h
@@ -116,6 +116,9 @@ private:
bool m_waitingForStop;
bool m_useMessageTypes;
+ bool m_globalEnabled;
+ quint64 m_globalFeatures;
+
QList<QQmlAbstractProfilerAdapter *> m_globalProfilers;
QMultiHash<QJSEngine *, QQmlAbstractProfilerAdapter *> m_engineProfilers;
QList<QJSEngine *> m_stoppingEngines;