diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2018-03-27 11:04:42 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2018-03-27 13:52:38 +0000 |
commit | 2ffd1a4f6baee12724de390606f6ea4ffd319def (patch) | |
tree | 70e8ac53bf83824dc6a03110d7573d991ebd9e49 | |
parent | cc6eef647302426ae6ef0759b9f59fd14e57bd1e (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.cpp | 12 | ||||
-rw-r--r-- | src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.h | 3 |
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; |