summaryrefslogtreecommitdiffstats
path: root/src/input
diff options
context:
space:
mode:
authorKevin Ottens <kevin.ottens@kdab.com>2015-12-16 10:44:30 +0100
committerKevin Ottens <kevin.ottens@kdab.com>2015-12-17 00:06:39 +0000
commit6b3a1019ff6ac944415b7b90f986f9068f5ea628 (patch)
treea6735abfce9e5b606ecf7910bad46cf62081affc /src/input
parent919d42a776ceeb741e97a87fead5197c45af422a (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')
-rw-r--r--src/input/backend/keyboardmousedeviceintegration.cpp3
-rw-r--r--src/input/backend/keyboardmousedeviceintegration_p.h3
-rw-r--r--src/input/frontend/qinputdeviceintegration.cpp8
-rw-r--r--src/input/frontend/qinputdeviceintegration.h4
-rw-r--r--src/input/frontend/qinputdeviceintegration_p.h3
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