diff options
author | Ulf Hermann <ulf.hermann@digia.com> | 2014-02-05 15:38:51 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-02-05 18:42:36 +0100 |
commit | 9ca736fd3f77aff2bbc61f6deabe2dc44f6e1bfd (patch) | |
tree | 4d390f847807d62a41cb85a1209b85f7651d4cb0 /src/qml | |
parent | 843202b6083f2b9d01391558b7e6e3e0d014cca6 (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.cpp | 34 | ||||
-rw-r--r-- | src/qml/debugger/qqmldebugserver_p.h | 2 | ||||
-rw-r--r-- | src/qml/debugger/qqmldebugservice.cpp | 16 | ||||
-rw-r--r-- | src/qml/debugger/qqmldebugservice_p.h | 6 | ||||
-rw-r--r-- | src/qml/debugger/qqmlenginedebugservice.cpp | 4 | ||||
-rw-r--r-- | src/qml/debugger/qqmlenginedebugservice_p.h | 4 | ||||
-rw-r--r-- | src/qml/debugger/qv4debugservice.cpp | 4 | ||||
-rw-r--r-- | src/qml/debugger/qv4debugservice_p.h | 4 | ||||
-rw-r--r-- | src/qml/debugger/qv4profilerservice.cpp | 6 | ||||
-rw-r--r-- | src/qml/debugger/qv4profilerservice_p.h | 1 | ||||
-rw-r--r-- | src/qml/qml/qqmlengine.cpp | 14 |
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 |