aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmltooling/qmldbg_profiler
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@theqtcompany.com>2015-11-10 14:08:11 +0100
committerUlf Hermann <ulf.hermann@theqtcompany.com>2015-11-17 18:42:17 +0000
commit5b091eb79b6853d0fde34b5dea89a84b7514a5ff (patch)
tree028ffc059c85a6a7f304e2b0f43f69aa01ae2701 /src/plugins/qmltooling/qmldbg_profiler
parentd3c3f026d376f5d9663cf4258162bc504afc1b28 (diff)
Use QJSEngine instead of QQmlEngine in debug services
This allows us to use the debug infrastructure in a JavaScript-only environment. Also add override declarations to make such changes easier in the future. Change-Id: I171271f0ad3868b3de71a8a2316a24602f94200a Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Diffstat (limited to 'src/plugins/qmltooling/qmldbg_profiler')
-rw-r--r--src/plugins/qmltooling/qmldbg_profiler/qqmlenginecontrolservice.cpp18
-rw-r--r--src/plugins/qmltooling/qmldbg_profiler/qqmlenginecontrolservice.h18
-rw-r--r--src/plugins/qmltooling/qmldbg_profiler/qqmlprofileradapter.h2
-rw-r--r--src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.cpp47
-rw-r--r--src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.h33
5 files changed, 60 insertions, 58 deletions
diff --git a/src/plugins/qmltooling/qmldbg_profiler/qqmlenginecontrolservice.cpp b/src/plugins/qmltooling/qmldbg_profiler/qqmlenginecontrolservice.cpp
index 61bf61eb13..2f7a7075ef 100644
--- a/src/plugins/qmltooling/qmldbg_profiler/qqmlenginecontrolservice.cpp
+++ b/src/plugins/qmltooling/qmldbg_profiler/qqmlenginecontrolservice.cpp
@@ -33,7 +33,7 @@
#include "qqmlenginecontrolservice.h"
#include "qqmldebugpacket.h"
-#include <QQmlEngine>
+#include <QJSEngine>
QT_BEGIN_NAMESPACE
@@ -49,7 +49,7 @@ void QQmlEngineControlServiceImpl::messageReceived(const QByteArray &message)
int command;
int engineId;
d >> command >> engineId;
- QQmlEngine *engine = qobject_cast<QQmlEngine *>(objectForId(engineId));
+ QJSEngine *engine = qobject_cast<QJSEngine *>(objectForId(engineId));
if (command == StartWaitingEngine && startingEngines.contains(engine)) {
startingEngines.removeOne(engine);
emit attachedToEngine(engine);
@@ -59,7 +59,7 @@ void QQmlEngineControlServiceImpl::messageReceived(const QByteArray &message)
}
}
-void QQmlEngineControlServiceImpl::engineAboutToBeAdded(QQmlEngine *engine)
+void QQmlEngineControlServiceImpl::engineAboutToBeAdded(QJSEngine *engine)
{
QMutexLocker lock(&dataMutex);
if (state() == Enabled) {
@@ -72,7 +72,7 @@ void QQmlEngineControlServiceImpl::engineAboutToBeAdded(QQmlEngine *engine)
}
}
-void QQmlEngineControlServiceImpl::engineAboutToBeRemoved(QQmlEngine *engine)
+void QQmlEngineControlServiceImpl::engineAboutToBeRemoved(QJSEngine *engine)
{
QMutexLocker lock(&dataMutex);
if (state() == Enabled) {
@@ -85,7 +85,7 @@ void QQmlEngineControlServiceImpl::engineAboutToBeRemoved(QQmlEngine *engine)
}
}
-void QQmlEngineControlServiceImpl::engineAdded(QQmlEngine *engine)
+void QQmlEngineControlServiceImpl::engineAdded(QJSEngine *engine)
{
if (state() == Enabled) {
QMutexLocker lock(&dataMutex);
@@ -95,7 +95,7 @@ void QQmlEngineControlServiceImpl::engineAdded(QQmlEngine *engine)
}
}
-void QQmlEngineControlServiceImpl::engineRemoved(QQmlEngine *engine)
+void QQmlEngineControlServiceImpl::engineRemoved(QJSEngine *engine)
{
if (state() == Enabled) {
QMutexLocker lock(&dataMutex);
@@ -105,7 +105,7 @@ void QQmlEngineControlServiceImpl::engineRemoved(QQmlEngine *engine)
}
}
-void QQmlEngineControlServiceImpl::sendMessage(QQmlEngineControlServiceImpl::MessageType type, QQmlEngine *engine)
+void QQmlEngineControlServiceImpl::sendMessage(QQmlEngineControlServiceImpl::MessageType type, QJSEngine *engine)
{
QQmlDebugPacket d;
d << type << idForObject(engine);
@@ -116,10 +116,10 @@ void QQmlEngineControlServiceImpl::stateChanged(State)
{
// We flush everything for any kind of state change, to avoid complicated timing issues.
QMutexLocker lock(&dataMutex);
- foreach (QQmlEngine *engine, startingEngines)
+ foreach (QJSEngine *engine, startingEngines)
emit attachedToEngine(engine);
startingEngines.clear();
- foreach (QQmlEngine *engine, stoppingEngines)
+ foreach (QJSEngine *engine, stoppingEngines)
emit detachedFromEngine(engine);
stoppingEngines.clear();
}
diff --git a/src/plugins/qmltooling/qmldbg_profiler/qqmlenginecontrolservice.h b/src/plugins/qmltooling/qmldbg_profiler/qqmlenginecontrolservice.h
index 8dbc922a6f..028852e964 100644
--- a/src/plugins/qmltooling/qmldbg_profiler/qqmlenginecontrolservice.h
+++ b/src/plugins/qmltooling/qmldbg_profiler/qqmlenginecontrolservice.h
@@ -71,18 +71,18 @@ protected:
friend class QQmlProfilerServiceFactory;
QMutex dataMutex;
- QList<QQmlEngine *> startingEngines;
- QList<QQmlEngine *> stoppingEngines;
+ QList<QJSEngine *> startingEngines;
+ QList<QJSEngine *> stoppingEngines;
- void messageReceived(const QByteArray &);
- void engineAboutToBeAdded(QQmlEngine *);
- void engineAboutToBeRemoved(QQmlEngine *);
- void engineAdded(QQmlEngine *);
- void engineRemoved(QQmlEngine *);
+ void messageReceived(const QByteArray &) Q_DECL_OVERRIDE;
+ void engineAboutToBeAdded(QJSEngine *) Q_DECL_OVERRIDE;
+ void engineAboutToBeRemoved(QJSEngine *) Q_DECL_OVERRIDE;
+ void engineAdded(QJSEngine *) Q_DECL_OVERRIDE;
+ void engineRemoved(QJSEngine *) Q_DECL_OVERRIDE;
- void sendMessage(MessageType type, QQmlEngine *engine);
+ void sendMessage(MessageType type, QJSEngine *engine);
- void stateChanged(State);
+ void stateChanged(State) Q_DECL_OVERRIDE;
};
QT_END_NAMESPACE
diff --git a/src/plugins/qmltooling/qmldbg_profiler/qqmlprofileradapter.h b/src/plugins/qmltooling/qmldbg_profiler/qqmlprofileradapter.h
index eceb58ce3a..b15c2febda 100644
--- a/src/plugins/qmltooling/qmldbg_profiler/qqmlprofileradapter.h
+++ b/src/plugins/qmltooling/qmldbg_profiler/qqmlprofileradapter.h
@@ -54,7 +54,7 @@ class QQmlProfilerAdapter : public QQmlAbstractProfilerAdapter {
Q_OBJECT
public:
QQmlProfilerAdapter(QQmlProfilerService *service, QQmlEnginePrivate *engine);
- qint64 sendMessages(qint64 until, QList<QByteArray> &messages);
+ qint64 sendMessages(qint64 until, QList<QByteArray> &messages) Q_DECL_OVERRIDE;
public slots:
void receiveData(const QVector<QQmlProfilerData> &new_data);
diff --git a/src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.cpp b/src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.cpp
index 3647a62682..e05717f8eb 100644
--- a/src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.cpp
+++ b/src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.cpp
@@ -37,7 +37,7 @@
#include "qqmlprofilerservicefactory.h"
#include "qqmldebugpacket.h"
-#include <private/qqmlengine_p.h>
+#include <private/qjsengine_p.h>
#include <private/qqmldebugpluginmanager_p.h>
#include <QtCore/qurl.h>
@@ -86,8 +86,8 @@ void QQmlProfilerServiceImpl::dataReady(QQmlAbstractProfilerAdapter *profiler)
}
m_startTimes.insert(0, profiler);
if (dataComplete) {
- QList<QQmlEngine *> enginesToRelease;
- foreach (QQmlEngine *engine, m_stoppingEngines) {
+ QList<QJSEngine *> enginesToRelease;
+ foreach (QJSEngine *engine, m_stoppingEngines) {
foreach (QQmlAbstractProfilerAdapter *engineProfiler, m_engineProfilers.values(engine)) {
if (m_startTimes.values().contains(engineProfiler)) {
enginesToRelease.append(engine);
@@ -96,27 +96,30 @@ void QQmlProfilerServiceImpl::dataReady(QQmlAbstractProfilerAdapter *profiler)
}
}
sendMessages();
- foreach (QQmlEngine *engine, enginesToRelease) {
+ foreach (QJSEngine *engine, enginesToRelease) {
m_stoppingEngines.removeOne(engine);
emit detachedFromEngine(engine);
}
}
}
-void QQmlProfilerServiceImpl::engineAboutToBeAdded(QQmlEngine *engine)
+void QQmlProfilerServiceImpl::engineAboutToBeAdded(QJSEngine *engine)
{
Q_ASSERT_X(QThread::currentThread() == engine->thread(), Q_FUNC_INFO,
"QML profilers have to be added from the engine thread");
QMutexLocker lock(&m_configMutex);
- QQmlProfilerAdapter *qmlAdapter = new QQmlProfilerAdapter(this, QQmlEnginePrivate::get(engine));
+ if (QQmlEngine *qmlEngine = qobject_cast<QQmlEngine *>(engine)) {
+ QQmlProfilerAdapter *qmlAdapter =
+ new QQmlProfilerAdapter(this, QQmlEnginePrivate::get(qmlEngine));
+ addEngineProfiler(qmlAdapter, engine);
+ }
QV4ProfilerAdapter *v4Adapter = new QV4ProfilerAdapter(this, QV8Engine::getV4(engine->handle()));
- addEngineProfiler(qmlAdapter, engine);
addEngineProfiler(v4Adapter, engine);
QQmlConfigurableDebugService<QQmlProfilerService>::engineAboutToBeAdded(engine);
}
-void QQmlProfilerServiceImpl::engineAdded(QQmlEngine *engine)
+void QQmlProfilerServiceImpl::engineAdded(QJSEngine *engine)
{
Q_ASSERT_X(QThread::currentThread() == engine->thread(), Q_FUNC_INFO,
"QML profilers have to be added from the engine thread");
@@ -126,7 +129,7 @@ void QQmlProfilerServiceImpl::engineAdded(QQmlEngine *engine)
profiler->stopWaiting();
}
-void QQmlProfilerServiceImpl::engineAboutToBeRemoved(QQmlEngine *engine)
+void QQmlProfilerServiceImpl::engineAboutToBeRemoved(QJSEngine *engine)
{
Q_ASSERT_X(QThread::currentThread() == engine->thread(), Q_FUNC_INFO,
"QML profilers have to be removed from the engine thread");
@@ -146,7 +149,7 @@ void QQmlProfilerServiceImpl::engineAboutToBeRemoved(QQmlEngine *engine)
}
}
-void QQmlProfilerServiceImpl::engineRemoved(QQmlEngine *engine)
+void QQmlProfilerServiceImpl::engineRemoved(QJSEngine *engine)
{
Q_ASSERT_X(QThread::currentThread() == engine->thread(), Q_FUNC_INFO,
"QML profilers have to be removed from the engine thread");
@@ -159,7 +162,7 @@ void QQmlProfilerServiceImpl::engineRemoved(QQmlEngine *engine)
m_engineProfilers.remove(engine);
}
-void QQmlProfilerServiceImpl::addEngineProfiler(QQmlAbstractProfilerAdapter *profiler, QQmlEngine *engine)
+void QQmlProfilerServiceImpl::addEngineProfiler(QQmlAbstractProfilerAdapter *profiler, QJSEngine *engine)
{
profiler->moveToThread(thread());
profiler->synchronize(m_timer);
@@ -208,7 +211,7 @@ void QQmlProfilerServiceImpl::removeProfilerFromStartTimes(const QQmlAbstractPro
*
* If any engine profiler is started like that also start all global profilers.
*/
-void QQmlProfilerServiceImpl::startProfiling(QQmlEngine *engine, quint64 features)
+void QQmlProfilerServiceImpl::startProfiling(QJSEngine *engine, quint64 features)
{
QMutexLocker lock(&m_configMutex);
@@ -226,8 +229,8 @@ void QQmlProfilerServiceImpl::startProfiling(QQmlEngine *engine, quint64 feature
if (startedAny)
d << idForObject(engine);
} else {
- QSet<QQmlEngine *> engines;
- for (QMultiHash<QQmlEngine *, QQmlAbstractProfilerAdapter *>::iterator i(m_engineProfilers.begin());
+ QSet<QJSEngine *> engines;
+ for (QMultiHash<QJSEngine *, QQmlAbstractProfilerAdapter *>::iterator i(m_engineProfilers.begin());
i != m_engineProfilers.end(); ++i) {
if (!i.value()->isRunning()) {
engines << i.key();
@@ -235,7 +238,7 @@ void QQmlProfilerServiceImpl::startProfiling(QQmlEngine *engine, quint64 feature
startedAny = true;
}
}
- foreach (QQmlEngine *profiledEngine, engines)
+ foreach (QJSEngine *profiledEngine, engines)
d << idForObject(profiledEngine);
}
@@ -258,14 +261,14 @@ void QQmlProfilerServiceImpl::startProfiling(QQmlEngine *engine, quint64 feature
* If afterwards no more engine profilers are running, also stop all global profilers. Otherwise
* only make them report their data.
*/
-void QQmlProfilerServiceImpl::stopProfiling(QQmlEngine *engine)
+void QQmlProfilerServiceImpl::stopProfiling(QJSEngine *engine)
{
QMutexLocker lock(&m_configMutex);
QList<QQmlAbstractProfilerAdapter *> stopping;
QList<QQmlAbstractProfilerAdapter *> reporting;
bool stillRunning = false;
- for (QMultiHash<QQmlEngine *, QQmlAbstractProfilerAdapter *>::iterator i(m_engineProfilers.begin());
+ for (QMultiHash<QJSEngine *, QQmlAbstractProfilerAdapter *>::iterator i(m_engineProfilers.begin());
i != m_engineProfilers.end(); ++i) {
if (i.value()->isRunning()) {
if (engine == 0 || i.key() == engine) {
@@ -312,9 +315,9 @@ void QQmlProfilerServiceImpl::sendMessages()
if (m_waitingForStop) {
traceEnd << m_timer.nsecsElapsed() << (int)Event << (int)EndTrace;
- QSet<QQmlEngine *> seen;
+ QSet<QJSEngine *> seen;
foreach (QQmlAbstractProfilerAdapter *profiler, m_startTimes) {
- for (QMultiHash<QQmlEngine *, QQmlAbstractProfilerAdapter *>::iterator i(m_engineProfilers.begin());
+ for (QMultiHash<QJSEngine *, QQmlAbstractProfilerAdapter *>::iterator i(m_engineProfilers.begin());
i != m_engineProfilers.end(); ++i) {
if (i.value() == profiler && !seen.contains(i.key())) {
seen << i.key();
@@ -366,7 +369,7 @@ void QQmlProfilerServiceImpl::stateAboutToBeChanged(QQmlDebugService::State newS
// Stop all profiling and send the data before we get disabled.
if (newState != Enabled) {
- foreach (QQmlEngine *engine, m_engineProfilers.keys())
+ foreach (QJSEngine *engine, m_engineProfilers.keys())
stopProfiling(engine);
}
}
@@ -402,9 +405,9 @@ void QQmlProfilerServiceImpl::messageReceived(const QByteArray &message)
// If engineId == -1 objectForId() and then the cast will return 0.
if (enabled)
- startProfiling(qobject_cast<QQmlEngine *>(objectForId(engineId)), features);
+ startProfiling(qobject_cast<QJSEngine *>(objectForId(engineId)), features);
else
- stopProfiling(qobject_cast<QQmlEngine *>(objectForId(engineId)));
+ stopProfiling(qobject_cast<QJSEngine *>(objectForId(engineId)));
stopWaiting();
}
diff --git a/src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.h b/src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.h
index 9b139ffabb..299d170339 100644
--- a/src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.h
+++ b/src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.h
@@ -64,8 +64,6 @@
QT_BEGIN_NAMESPACE
class QUrl;
-class QQmlEngine;
-
class QQmlProfilerServiceImpl :
public QQmlConfigurableDebugService<QQmlProfilerService>,
@@ -74,21 +72,22 @@ class QQmlProfilerServiceImpl :
Q_OBJECT
public:
- void engineAboutToBeAdded(QQmlEngine *engine);
- void engineAboutToBeRemoved(QQmlEngine *engine);
- void engineAdded(QQmlEngine *engine);
- void engineRemoved(QQmlEngine *engine);
+ void engineAboutToBeAdded(QJSEngine *engine) Q_DECL_OVERRIDE;
+ void engineAboutToBeRemoved(QJSEngine *engine) Q_DECL_OVERRIDE;
+ void engineAdded(QJSEngine *engine) Q_DECL_OVERRIDE;
+ void engineRemoved(QJSEngine *engine) Q_DECL_OVERRIDE;
- void addGlobalProfiler(QQmlAbstractProfilerAdapter *profiler);
- void removeGlobalProfiler(QQmlAbstractProfilerAdapter *profiler);
+ void addGlobalProfiler(QQmlAbstractProfilerAdapter *profiler) Q_DECL_OVERRIDE;
+ void removeGlobalProfiler(QQmlAbstractProfilerAdapter *profiler) Q_DECL_OVERRIDE;
- void startProfiling(QQmlEngine *engine, quint64 features = std::numeric_limits<quint64>::max());
- void stopProfiling(QQmlEngine *engine);
+ void startProfiling(QJSEngine *engine,
+ quint64 features = std::numeric_limits<quint64>::max()) Q_DECL_OVERRIDE;
+ void stopProfiling(QJSEngine *engine) Q_DECL_OVERRIDE;
QQmlProfilerServiceImpl(QObject *parent = 0);
- ~QQmlProfilerServiceImpl();
+ ~QQmlProfilerServiceImpl() Q_DECL_OVERRIDE;
- void dataReady(QQmlAbstractProfilerAdapter *profiler);
+ void dataReady(QQmlAbstractProfilerAdapter *profiler) Q_DECL_OVERRIDE;
signals:
void startFlushTimer();
@@ -98,14 +97,14 @@ private slots:
void flush();
protected:
- virtual void stateAboutToBeChanged(State state);
- virtual void messageReceived(const QByteArray &);
+ virtual void stateAboutToBeChanged(State state) Q_DECL_OVERRIDE;
+ virtual void messageReceived(const QByteArray &) Q_DECL_OVERRIDE;
private:
friend class QQmlProfilerServiceFactory;
void sendMessages();
- void addEngineProfiler(QQmlAbstractProfilerAdapter *profiler, QQmlEngine *engine);
+ void addEngineProfiler(QQmlAbstractProfilerAdapter *profiler, QJSEngine *engine);
void removeProfilerFromStartTimes(const QQmlAbstractProfilerAdapter *profiler);
QElapsedTimer m_timer;
@@ -113,8 +112,8 @@ private:
bool m_waitingForStop;
QList<QQmlAbstractProfilerAdapter *> m_globalProfilers;
- QMultiHash<QQmlEngine *, QQmlAbstractProfilerAdapter *> m_engineProfilers;
- QList<QQmlEngine *> m_stoppingEngines;
+ QMultiHash<QJSEngine *, QQmlAbstractProfilerAdapter *> m_engineProfilers;
+ QList<QJSEngine *> m_stoppingEngines;
QMultiMap<qint64, QQmlAbstractProfilerAdapter *> m_startTimes;
};