diff options
author | Ulf Hermann <ulf.hermann@theqtcompany.com> | 2015-07-16 14:18:54 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@theqtcompany.com> | 2015-07-31 11:31:14 +0000 |
commit | cd587fb494b465a4f30582099e0056164a8d1ca9 (patch) | |
tree | 6c7a3bc222ddfc2102bb8dd8c4c21d92721d7df3 /src/qml/debugger | |
parent | e061150cc54255726b8cda8cc928d3ed03ea8093 (diff) |
Make QQmlConfigurableDebugService a template
We will need to derive from service-specific interfaces once we move
the services into plugins and QQmlConfigurableDebugService doesn't need
to live in QtQml.
Change-Id: I151f32ea0f8be9719b245fc19164269c6e62a84a
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Diffstat (limited to 'src/qml/debugger')
-rw-r--r-- | src/qml/debugger/debugger.pri | 1 | ||||
-rw-r--r-- | src/qml/debugger/qqmlconfigurabledebugservice.cpp | 80 | ||||
-rw-r--r-- | src/qml/debugger/qqmlconfigurabledebugservice_p.h | 47 | ||||
-rw-r--r-- | src/qml/debugger/qqmlprofilerservice.cpp | 5 | ||||
-rw-r--r-- | src/qml/debugger/qqmlprofilerservice_p.h | 4 | ||||
-rw-r--r-- | src/qml/debugger/qv4debugservice.cpp | 9 | ||||
-rw-r--r-- | src/qml/debugger/qv4debugservice_p.h | 3 |
7 files changed, 51 insertions, 98 deletions
diff --git a/src/qml/debugger/debugger.pri b/src/qml/debugger/debugger.pri index b3e3b3fc90..ec2e52ece3 100644 --- a/src/qml/debugger/debugger.pri +++ b/src/qml/debugger/debugger.pri @@ -10,7 +10,6 @@ SOURCES += \ $$PWD/qqmlenginedebugservice.cpp \ $$PWD/qdebugmessageservice.cpp \ $$PWD/qv4debugservice.cpp \ - $$PWD/qqmlconfigurabledebugservice.cpp \ $$PWD/qqmlenginecontrolservice.cpp \ $$PWD/qqmlabstractprofileradapter.cpp \ $$PWD/qv4profileradapter.cpp \ diff --git a/src/qml/debugger/qqmlconfigurabledebugservice.cpp b/src/qml/debugger/qqmlconfigurabledebugservice.cpp deleted file mode 100644 index 679fa04abe..0000000000 --- a/src/qml/debugger/qqmlconfigurabledebugservice.cpp +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the QtQml module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL21$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qqmlconfigurabledebugservice_p.h" -#include "qqmldebugconnector_p.h" - -QT_BEGIN_NAMESPACE - -QQmlConfigurableDebugService::QQmlConfigurableDebugService(const QString &name, float version, - QObject *parent) : - QQmlDebugService(name, version, parent), m_configMutex(QMutex::Recursive) -{ - init(); -} - -void QQmlConfigurableDebugService::init() -{ - QMutexLocker lock(&m_configMutex); - // If we're not enabled or not blocking, don't wait for configuration - m_waitingForConfiguration = (state() == Enabled && - QQmlDebugConnector::instance()->blockingMode()); -} - -void QQmlConfigurableDebugService::stopWaiting() -{ - QMutexLocker lock(&m_configMutex); - m_waitingForConfiguration = false; - foreach (QQmlEngine *engine, m_waitingEngines) - emit attachedToEngine(engine); - m_waitingEngines.clear(); -} - -void QQmlConfigurableDebugService::stateChanged(QQmlDebugService::State newState) -{ - if (newState != Enabled) - stopWaiting(); - else - init(); -} - -void QQmlConfigurableDebugService::engineAboutToBeAdded(QQmlEngine *engine) -{ - QMutexLocker lock(&m_configMutex); - if (m_waitingForConfiguration) - m_waitingEngines.append(engine); - else - emit attachedToEngine(engine); -} - -QT_END_NAMESPACE diff --git a/src/qml/debugger/qqmlconfigurabledebugservice_p.h b/src/qml/debugger/qqmlconfigurabledebugservice_p.h index 28f0f4dfe2..1329591cba 100644 --- a/src/qml/debugger/qqmlconfigurabledebugservice_p.h +++ b/src/qml/debugger/qqmlconfigurabledebugservice_p.h @@ -47,21 +47,54 @@ // #include "qqmldebugservice_p.h" +#include "qqmldebugconnector_p.h" #include <QtCore/qmutex.h> QT_BEGIN_NAMESPACE -class QQmlConfigurableDebugService : public QQmlDebugService +template <class Base> +class QQmlConfigurableDebugService : public Base { - Q_OBJECT protected: - QQmlConfigurableDebugService(const QString &name, float version, QObject *parent = 0); + QQmlConfigurableDebugService(const QString &name, float version, QObject *parent = 0) : + Base(name, version, parent), m_configMutex(QMutex::Recursive) + { + init(); + } - void stopWaiting(); - void init(); + void stopWaiting() + { + QMutexLocker lock(&m_configMutex); + m_waitingForConfiguration = false; + foreach (QQmlEngine *engine, m_waitingEngines) + emit Base::attachedToEngine(engine); + m_waitingEngines.clear(); + } - void stateChanged(State); - void engineAboutToBeAdded(QQmlEngine *); + void init() + { + QMutexLocker lock(&m_configMutex); + // If we're not enabled or not blocking, don't wait for configuration + m_waitingForConfiguration = (Base::state() == QQmlDebugService::Enabled && + QQmlDebugConnector::instance()->blockingMode()); + } + + void stateChanged(QQmlDebugService::State newState) + { + if (newState != QQmlDebugService::Enabled) + stopWaiting(); + else + init(); + } + + void engineAboutToBeAdded(QQmlEngine *engine) + { + QMutexLocker lock(&m_configMutex); + if (m_waitingForConfiguration) + m_waitingEngines.append(engine); + else + emit Base::attachedToEngine(engine); + } QMutex m_configMutex; QList<QQmlEngine *> m_waitingEngines; diff --git a/src/qml/debugger/qqmlprofilerservice.cpp b/src/qml/debugger/qqmlprofilerservice.cpp index dfd9a0cd3b..6f50b41b1b 100644 --- a/src/qml/debugger/qqmlprofilerservice.cpp +++ b/src/qml/debugger/qqmlprofilerservice.cpp @@ -48,7 +48,7 @@ QT_BEGIN_NAMESPACE Q_GLOBAL_STATIC(QQmlProfilerService, profilerInstance) QQmlProfilerService::QQmlProfilerService() - : QQmlConfigurableDebugService(QStringLiteral("CanvasFrameRate"), 1) + : QQmlConfigurableDebugService<QQmlDebugService>(QStringLiteral("CanvasFrameRate"), 1) { m_timer.start(); } @@ -109,8 +109,7 @@ void QQmlProfilerService::engineAboutToBeAdded(QQmlEngine *engine) QV4ProfilerAdapter *v4Adapter = new QV4ProfilerAdapter(this, QV8Engine::getV4(engine->handle())); addEngineProfiler(qmlAdapter, engine); addEngineProfiler(v4Adapter, engine); - - QQmlConfigurableDebugService::engineAboutToBeAdded(engine); + QQmlConfigurableDebugService<QQmlDebugService>::engineAboutToBeAdded(engine); } void QQmlProfilerService::engineAdded(QQmlEngine *engine) diff --git a/src/qml/debugger/qqmlprofilerservice_p.h b/src/qml/debugger/qqmlprofilerservice_p.h index 978d8413a7..518f60bb7c 100644 --- a/src/qml/debugger/qqmlprofilerservice_p.h +++ b/src/qml/debugger/qqmlprofilerservice_p.h @@ -66,7 +66,9 @@ class QUrl; class QQmlEngine; -class Q_QML_PRIVATE_EXPORT QQmlProfilerService : public QQmlConfigurableDebugService, public QQmlProfilerDefinitions +class Q_QML_PRIVATE_EXPORT QQmlProfilerService : + public QQmlConfigurableDebugService<QQmlDebugService>, + public QQmlProfilerDefinitions { Q_OBJECT public: diff --git a/src/qml/debugger/qv4debugservice.cpp b/src/qml/debugger/qv4debugservice.cpp index 19c06bffeb..63673a0ef8 100644 --- a/src/qml/debugger/qv4debugservice.cpp +++ b/src/qml/debugger/qv4debugservice.cpp @@ -832,8 +832,9 @@ V8CommandHandler *QV4DebugService::v8CommandHandler(const QString &command) cons } QV4DebugService::QV4DebugService(QObject *parent) : - QQmlConfigurableDebugService(QStringLiteral("V8Debugger"), 1, parent), debuggerAgent(this), - version(1), theSelectedFrame(0), unknownV8CommandHandler(new UnknownV8CommandHandler) + QQmlConfigurableDebugService<QQmlDebugService>(QStringLiteral("V8Debugger"), 1, parent), + debuggerAgent(this), version(1), theSelectedFrame(0), + unknownV8CommandHandler(new UnknownV8CommandHandler) { addHandler(new V8VersionRequest); addHandler(new V8SetBreakPointRequest); @@ -875,7 +876,7 @@ void QV4DebugService::engineAboutToBeAdded(QQmlEngine *engine) } } } - QQmlConfigurableDebugService::engineAboutToBeAdded(engine); + QQmlConfigurableDebugService<QQmlDebugService>::engineAboutToBeAdded(engine); } void QV4DebugService::engineAboutToBeRemoved(QQmlEngine *engine) @@ -896,7 +897,7 @@ void QV4DebugService::engineAboutToBeRemoved(QQmlEngine *engine) debuggerAgent.removeDebugger(debugger); } } - QQmlConfigurableDebugService::engineAboutToBeRemoved(engine); + QQmlConfigurableDebugService<QQmlDebugService>::engineAboutToBeRemoved(engine); } void QV4DebugService::signalEmitted(const QString &signal) diff --git a/src/qml/debugger/qv4debugservice_p.h b/src/qml/debugger/qv4debugservice_p.h index b824b47b23..4e7806f5f9 100644 --- a/src/qml/debugger/qv4debugservice_p.h +++ b/src/qml/debugger/qv4debugservice_p.h @@ -78,8 +78,7 @@ private: QV4DebugService *debugService; }; - -class QV4DebugService : public QQmlConfigurableDebugService +class QV4DebugService : public QQmlConfigurableDebugService<QQmlDebugService> { Q_OBJECT public: |