diff options
author | Kevin Ottens <kevin.ottens@kdab.com> | 2015-12-16 10:44:30 +0100 |
---|---|---|
committer | Kevin Ottens <kevin.ottens@kdab.com> | 2015-12-17 00:06:39 +0000 |
commit | 6b3a1019ff6ac944415b7b90f986f9068f5ea628 (patch) | |
tree | a6735abfce9e5b606ecf7910bad46cf62081affc /src/input | |
parent | 919d42a776ceeb741e97a87fead5197c45af422a (diff) |
Make QInputDeviceIntegration::initialize() safer
initialize() is now public and non virtual, only recording the aspect
pointer, while doInitialize() is private and pure virtual.
Change-Id: Ic68b7b729205d9ec01927e9dc576cab16f53d18e
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/input')
5 files changed, 17 insertions, 4 deletions
diff --git a/src/input/backend/keyboardmousedeviceintegration.cpp b/src/input/backend/keyboardmousedeviceintegration.cpp index c6f6f776e..f7cc02bf5 100644 --- a/src/input/backend/keyboardmousedeviceintegration.cpp +++ b/src/input/backend/keyboardmousedeviceintegration.cpp @@ -54,9 +54,8 @@ KeyboardMouseDeviceIntegration::~KeyboardMouseDeviceIntegration() { } -void KeyboardMouseDeviceIntegration::initialize(QInputAspect *aspect) +void KeyboardMouseDeviceIntegration::onInitialize() { - Q_UNUSED(aspect) } QVector<Qt3DCore::QAspectJobPtr> KeyboardMouseDeviceIntegration::jobsToExecute(qint64 time) diff --git a/src/input/backend/keyboardmousedeviceintegration_p.h b/src/input/backend/keyboardmousedeviceintegration_p.h index 2ceb923d8..6a824871f 100644 --- a/src/input/backend/keyboardmousedeviceintegration_p.h +++ b/src/input/backend/keyboardmousedeviceintegration_p.h @@ -54,13 +54,14 @@ public: explicit KeyboardMouseDeviceIntegration(InputHandler *handleer); ~KeyboardMouseDeviceIntegration(); - void initialize(QInputAspect *aspect) Q_DECL_FINAL; QVector<Qt3DCore::QAspectJobPtr> jobsToExecute(qint64 time) Q_DECL_FINAL; QAbstractPhysicalDevice *createPhysicalDevice(const QString &name) Q_DECL_FINAL; QVector<Qt3DCore::QNodeId> physicalDevices() const Q_DECL_FINAL; QAbstractPhysicalDeviceBackendNode *physicalDevice(Qt3DCore::QNodeId id) const Q_DECL_FINAL; private: + void onInitialize() Q_DECL_FINAL; + InputHandler *m_handler; }; diff --git a/src/input/frontend/qinputdeviceintegration.cpp b/src/input/frontend/qinputdeviceintegration.cpp index 67f541ac8..b2f0989b9 100644 --- a/src/input/frontend/qinputdeviceintegration.cpp +++ b/src/input/frontend/qinputdeviceintegration.cpp @@ -43,6 +43,7 @@ namespace Qt3DInput { QInputDeviceIntegrationPrivate::QInputDeviceIntegrationPrivate() : QObjectPrivate() + , m_aspect(Q_NULLPTR) { } @@ -56,6 +57,13 @@ QInputDeviceIntegration::QInputDeviceIntegration(QInputDeviceIntegrationPrivate { } +void QInputDeviceIntegration::initialize(QInputAspect *aspect) +{ + Q_D(QInputDeviceIntegration); + d->m_aspect = aspect; + onInitialize(); +} + } // namespace Qt3DInput QT_END_NAMESPACE diff --git a/src/input/frontend/qinputdeviceintegration.h b/src/input/frontend/qinputdeviceintegration.h index 0bb297ddc..bf0d20e0d 100644 --- a/src/input/frontend/qinputdeviceintegration.h +++ b/src/input/frontend/qinputdeviceintegration.h @@ -60,7 +60,7 @@ protected: explicit QInputDeviceIntegration(QInputDeviceIntegrationPrivate &dd, QObject *parent = 0); public: - virtual void initialize(Qt3DInput::QInputAspect *aspect) = 0; + void initialize(Qt3DInput::QInputAspect *aspect); virtual QVector<Qt3DCore::QAspectJobPtr> jobsToExecute(qint64 time) = 0; virtual QAbstractPhysicalDevice *createPhysicalDevice(const QString &name) = 0; @@ -68,6 +68,8 @@ public: virtual QAbstractPhysicalDeviceBackendNode *physicalDevice(Qt3DCore::QNodeId id) const = 0; private: + virtual void onInitialize() = 0; + Q_DECLARE_PRIVATE(QInputDeviceIntegration) }; diff --git a/src/input/frontend/qinputdeviceintegration_p.h b/src/input/frontend/qinputdeviceintegration_p.h index 27c63be17..e54080af1 100644 --- a/src/input/frontend/qinputdeviceintegration_p.h +++ b/src/input/frontend/qinputdeviceintegration_p.h @@ -55,6 +55,7 @@ QT_BEGIN_NAMESPACE namespace Qt3DInput { +class QInputAspect; class QInputDeviceIntegration; class QT3DINPUTSHARED_PRIVATE_EXPORT QInputDeviceIntegrationPrivate : public QObjectPrivate @@ -63,6 +64,8 @@ public: QInputDeviceIntegrationPrivate(); Q_DECLARE_PUBLIC(QInputDeviceIntegration) + + QInputAspect *m_aspect; }; } // Qt3DInput |