aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2018-03-28 08:27:57 +0200
committerLiang Qi <liang.qi@qt.io>2018-03-28 08:27:57 +0200
commit198409ba76e18587526e9e1ec84fdb432c671937 (patch)
tree2d06c052272ddfd1c9b34b863e342826a31d20b9 /src/plugins
parent9a98d16d9e49395a24cd733ca8f65b2f82ebba94 (diff)
parente696a6b7bff04d1581cf59b4d96ecb5508f54169 (diff)
Merge remote-tracking branch 'origin/5.11' into dev
Conflicts: src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.cpp tests/auto/qml/qjsengine/tst_qjsengine.cpp Change-Id: I8276669e257f35a76768ef7f8795a8605cf4c9bc
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.cpp15
-rw-r--r--src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.h3
2 files changed, 15 insertions, 3 deletions
diff --git a/src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.cpp b/src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.cpp
index 92e93a053a..22c515adf9 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_waitingForStop(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) {
@@ -274,9 +281,8 @@ void QQmlProfilerServiceImpl::startProfiling(QJSEngine *engine, quint64 features
}
emit startFlushTimer();
+ emit messageToClient(name(), d.data());
}
-
- emit messageToClient(name(), d.data());
}
/*!
@@ -292,6 +298,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 e86c8df4ac..ce0101f4d4 100644
--- a/src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.h
+++ b/src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.h
@@ -115,6 +115,9 @@ private:
QTimer m_flushTimer;
bool m_waitingForStop;
+ bool m_globalEnabled;
+ quint64 m_globalFeatures;
+
QList<QQmlAbstractProfilerAdapter *> m_globalProfilers;
QMultiHash<QJSEngine *, QQmlAbstractProfilerAdapter *> m_engineProfilers;
QList<QJSEngine *> m_stoppingEngines;