aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@digia.com>2014-02-05 15:38:51 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-05 18:42:36 +0100
commit9ca736fd3f77aff2bbc61f6deabe2dc44f6e1bfd (patch)
tree4d390f847807d62a41cb85a1209b85f7651d4cb0 /src/qml
parent843202b6083f2b9d01391558b7e6e3e0d014cca6 (diff)
Unify the interface for QQmlDebugServices
Let the debug server handle adding and removing of engines through defined interfaces to prepare for multi-engine profiling and debugging. Change-Id: I7b277e54bdcce1d3e95e723f041a7db6b08b29fc Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Diffstat (limited to 'src/qml')
-rw-r--r--src/qml/debugger/qqmldebugserver.cpp34
-rw-r--r--src/qml/debugger/qqmldebugserver_p.h2
-rw-r--r--src/qml/debugger/qqmldebugservice.cpp16
-rw-r--r--src/qml/debugger/qqmldebugservice_p.h6
-rw-r--r--src/qml/debugger/qqmlenginedebugservice.cpp4
-rw-r--r--src/qml/debugger/qqmlenginedebugservice_p.h4
-rw-r--r--src/qml/debugger/qv4debugservice.cpp4
-rw-r--r--src/qml/debugger/qv4debugservice_p.h4
-rw-r--r--src/qml/debugger/qv4profilerservice.cpp6
-rw-r--r--src/qml/debugger/qv4profilerservice_p.h1
-rw-r--r--src/qml/qml/qqmlengine.cpp14
11 files changed, 73 insertions, 22 deletions
diff --git a/src/qml/debugger/qqmldebugserver.cpp b/src/qml/debugger/qqmldebugserver.cpp
index cddac0e595..025bbc2113 100644
--- a/src/qml/debugger/qqmldebugserver.cpp
+++ b/src/qml/debugger/qqmldebugserver.cpp
@@ -42,6 +42,12 @@
#include "qqmldebugserver_p.h"
#include "qqmldebugservice_p.h"
#include "qqmldebugservice_p_p.h"
+#include "qqmlenginedebugservice_p.h"
+#include "qv4debugservice_p.h"
+#include "qv4profilerservice_p.h"
+#include "qdebugmessageservice_p.h"
+#include "qqmlprofilerservice_p.h"
+
#include <private/qqmlengine_p.h>
#include <private/qqmlglobal_p.h>
@@ -563,6 +569,34 @@ QStringList QQmlDebugServer::serviceNames() const
return d->plugins.keys();
}
+void QQmlDebugServer::addEngine(QQmlEngine *engine)
+{
+ Q_D(QQmlDebugServer);
+ QReadLocker lock(&d->pluginsLock);
+
+ foreach (QQmlDebugService *service, d->plugins)
+ service->engineAboutToBeAdded(engine);
+
+ // TODO: Later wait here for initialization.
+
+ foreach (QQmlDebugService *service, d->plugins)
+ service->engineAdded(engine);
+}
+
+void QQmlDebugServer::removeEngine(QQmlEngine *engine)
+{
+ Q_D(QQmlDebugServer);
+ QReadLocker lock(&d->pluginsLock);
+
+ foreach (QQmlDebugService *service, d->plugins)
+ service->engineAboutToBeRemoved(engine);
+
+ // TODO: Later wait here for cleanup
+
+ foreach (QQmlDebugService *service, d->plugins)
+ service->engineRemoved(engine);
+}
+
bool QQmlDebugServer::addService(QQmlDebugService *service)
{
Q_D(QQmlDebugServer);
diff --git a/src/qml/debugger/qqmldebugserver_p.h b/src/qml/debugger/qqmldebugserver_p.h
index 6ee6dd2d46..2d3ffb9351 100644
--- a/src/qml/debugger/qqmldebugserver_p.h
+++ b/src/qml/debugger/qqmldebugserver_p.h
@@ -77,6 +77,8 @@ public:
QList<QQmlDebugService*> services() const;
QStringList serviceNames() const;
+ void addEngine(QQmlEngine *engine);
+ void removeEngine(QQmlEngine *engine);
bool addService(QQmlDebugService *service);
bool removeService(QQmlDebugService *service);
diff --git a/src/qml/debugger/qqmldebugservice.cpp b/src/qml/debugger/qqmldebugservice.cpp
index d8fc2f2bb2..f9e6643305 100644
--- a/src/qml/debugger/qqmldebugservice.cpp
+++ b/src/qml/debugger/qqmldebugservice.cpp
@@ -318,6 +318,22 @@ void QQmlDebugService::messageReceived(const QByteArray &)
{
}
+void QQmlDebugService::engineAboutToBeAdded(QQmlEngine *)
+{
+}
+
+void QQmlDebugService::engineAboutToBeRemoved(QQmlEngine *)
+{
+}
+
+void QQmlDebugService::engineAdded(QQmlEngine *)
+{
+}
+
+void QQmlDebugService::engineRemoved(QQmlEngine *)
+{
+}
+
QQmlDebugStream::QQmlDebugStream()
: QDataStream()
{
diff --git a/src/qml/debugger/qqmldebugservice_p.h b/src/qml/debugger/qqmldebugservice_p.h
index 71a116f6a5..fd2a8c361a 100644
--- a/src/qml/debugger/qqmldebugservice_p.h
+++ b/src/qml/debugger/qqmldebugservice_p.h
@@ -60,6 +60,7 @@
QT_BEGIN_NAMESPACE
+class QQmlEngine;
class QQmlDebugServicePrivate;
class Q_QML_PRIVATE_EXPORT QQmlDebugService : public QObject
@@ -103,6 +104,11 @@ protected:
virtual void stateChanged(State);
virtual void messageReceived(const QByteArray &);
+ virtual void engineAboutToBeAdded(QQmlEngine *);
+ virtual void engineAboutToBeRemoved(QQmlEngine *);
+ virtual void engineAdded(QQmlEngine *);
+ virtual void engineRemoved(QQmlEngine *);
+
private:
friend class QQmlDebugServer;
friend class QQmlDebugServerPrivate;
diff --git a/src/qml/debugger/qqmlenginedebugservice.cpp b/src/qml/debugger/qqmlenginedebugservice.cpp
index 300561050f..0530b93a82 100644
--- a/src/qml/debugger/qqmlenginedebugservice.cpp
+++ b/src/qml/debugger/qqmlenginedebugservice.cpp
@@ -759,7 +759,7 @@ void QQmlEngineDebugService::propertyChanged(int id, int objectId, const QMetaPr
sendMessage(reply);
}
-void QQmlEngineDebugService::addEngine(QQmlEngine *engine)
+void QQmlEngineDebugService::engineAboutToBeAdded(QQmlEngine *engine)
{
Q_ASSERT(engine);
Q_ASSERT(!m_engines.contains(engine));
@@ -767,7 +767,7 @@ void QQmlEngineDebugService::addEngine(QQmlEngine *engine)
m_engines.append(engine);
}
-void QQmlEngineDebugService::remEngine(QQmlEngine *engine)
+void QQmlEngineDebugService::engineAboutToBeRemoved(QQmlEngine *engine)
{
Q_ASSERT(engine);
Q_ASSERT(m_engines.contains(engine));
diff --git a/src/qml/debugger/qqmlenginedebugservice_p.h b/src/qml/debugger/qqmlenginedebugservice_p.h
index bbd6aac1b1..4809ee3ed5 100644
--- a/src/qml/debugger/qqmlenginedebugservice_p.h
+++ b/src/qml/debugger/qqmlenginedebugservice_p.h
@@ -96,8 +96,8 @@ public:
bool hasNotifySignal;
};
- void addEngine(QQmlEngine *);
- void remEngine(QQmlEngine *);
+ void engineAboutToBeAdded(QQmlEngine *);
+ void engineAboutToBeRemoved(QQmlEngine *);
void objectCreated(QQmlEngine *, QObject *);
void setStatesDelegate(QQmlDebugStatesDelegate *);
diff --git a/src/qml/debugger/qv4debugservice.cpp b/src/qml/debugger/qv4debugservice.cpp
index 372a51e997..52fbbcf0f0 100644
--- a/src/qml/debugger/qv4debugservice.cpp
+++ b/src/qml/debugger/qv4debugservice.cpp
@@ -1022,7 +1022,7 @@ QV4DebugService *QV4DebugService::instance()
return v4ServiceInstance();
}
-void QV4DebugService::addEngine(const QQmlEngine *engine)
+void QV4DebugService::engineAboutToBeAdded(QQmlEngine *engine)
{
Q_D(QV4DebugService);
@@ -1041,7 +1041,7 @@ void QV4DebugService::addEngine(const QQmlEngine *engine)
}
}
-void QV4DebugService::removeEngine(const QQmlEngine *engine)
+void QV4DebugService::engineAboutToBeRemoved(QQmlEngine *engine)
{
Q_D(QV4DebugService);
if (engine){
diff --git a/src/qml/debugger/qv4debugservice_p.h b/src/qml/debugger/qv4debugservice_p.h
index e35010bebf..0aa38150c6 100644
--- a/src/qml/debugger/qv4debugservice_p.h
+++ b/src/qml/debugger/qv4debugservice_p.h
@@ -69,8 +69,8 @@ public:
~QV4DebugService();
static QV4DebugService *instance();
- void addEngine(const QQmlEngine *engine);
- void removeEngine(const QQmlEngine *engine);
+ void engineAboutToBeAdded(QQmlEngine *engine);
+ void engineAboutToBeRemoved(QQmlEngine *engine);
void signalEmitted(const QString &signal);
diff --git a/src/qml/debugger/qv4profilerservice.cpp b/src/qml/debugger/qv4profilerservice.cpp
index 50bec8ec25..b064f57089 100644
--- a/src/qml/debugger/qv4profilerservice.cpp
+++ b/src/qml/debugger/qv4profilerservice.cpp
@@ -127,12 +127,6 @@ QV4ProfilerService *QV4ProfilerService::instance()
return v4ProfilerInstance();
}
-void QV4ProfilerService::initialize()
-{
- // just make sure that the service is properly registered
- v4ProfilerInstance();
-}
-
void QV4ProfilerService::stateAboutToBeChanged(QQmlDebugService::State newState)
{
Q_D(QV4ProfilerService);
diff --git a/src/qml/debugger/qv4profilerservice_p.h b/src/qml/debugger/qv4profilerservice_p.h
index 252c154a68..cf330e5a1b 100644
--- a/src/qml/debugger/qv4profilerservice_p.h
+++ b/src/qml/debugger/qv4profilerservice_p.h
@@ -92,7 +92,6 @@ public:
~QV4ProfilerService();
static QV4ProfilerService *instance();
- static void initialize();
public Q_SLOTS:
void startProfiling(const QString &title);
diff --git a/src/qml/qml/qqmlengine.cpp b/src/qml/qml/qqmlengine.cpp
index 0766fcb7b1..0529e41007 100644
--- a/src/qml/qml/qqmlengine.cpp
+++ b/src/qml/qml/qqmlengine.cpp
@@ -62,6 +62,7 @@
#include "qqmllist_p.h"
#include "qqmltypenamecache_p.h"
#include "qqmlnotifier_p.h"
+#include <private/qqmldebugserver_p.h>
#include <private/qqmlprofilerservice_p.h>
#include <private/qv4debugservice_p.h>
#include <private/qdebugmessageservice_p.h>
@@ -813,11 +814,12 @@ void QQmlEnginePrivate::init()
if (QCoreApplication::instance()->thread() == q->thread() &&
QQmlEngineDebugService::isDebuggingEnabled()) {
isDebugging = true;
- QQmlEngineDebugService::instance()->addEngine(q);
- QV4DebugService::instance()->addEngine(q);
- QV4ProfilerService::initialize();
+ QQmlEngineDebugService::instance();
+ QV4DebugService::instance();
+ QV4ProfilerService::instance();
QQmlProfilerService::instance();
QDebugMessageService::instance();
+ QQmlDebugServer::instance()->addEngine(q);
}
}
@@ -895,10 +897,8 @@ QQmlEngine::QQmlEngine(QQmlEnginePrivate &dd, QObject *parent)
QQmlEngine::~QQmlEngine()
{
Q_D(QQmlEngine);
- if (d->isDebugging) {
- QQmlEngineDebugService::instance()->remEngine(this);
- QV4DebugService::instance()->removeEngine(this);
- }
+ if (d->isDebugging)
+ QQmlDebugServer::instance()->removeEngine(this);
// Emit onDestruction signals for the root context before
// we destroy the contexts, engine, Singleton Types etc. that