summaryrefslogtreecommitdiffstats
path: root/src/input/frontend
diff options
context:
space:
mode:
authorMike Krus <mike.krus@kdab.com>2019-09-27 18:43:31 +0100
committerMike Krus <mike.krus@kdab.com>2019-10-01 07:03:59 +0100
commite532a1cf37855f79a0a662d9b07786337e5fd220 (patch)
tree63e1db51740285e44bdc32ec49f7e135b5405f97 /src/input/frontend
parentecd455dc00ced212a156f678cd022c10652c8422 (diff)
Update device nodes to use direct sync
Change-Id: Ic93968816b719ff407db1d1f2f67d906fab3ca0a Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/input/frontend')
-rw-r--r--src/input/frontend/qabstractphysicaldevice.cpp28
-rw-r--r--src/input/frontend/qabstractphysicaldevice_p.h3
-rw-r--r--src/input/frontend/qinputaspect.cpp6
3 files changed, 12 insertions, 25 deletions
diff --git a/src/input/frontend/qabstractphysicaldevice.cpp b/src/input/frontend/qabstractphysicaldevice.cpp
index 120ec43a2..b925f8ed3 100644
--- a/src/input/frontend/qabstractphysicaldevice.cpp
+++ b/src/input/frontend/qabstractphysicaldevice.cpp
@@ -168,12 +168,7 @@ void QAbstractPhysicalDevice::addAxisSetting(QAxisSetting *axisSetting)
{
Q_D(QAbstractPhysicalDevice);
if (axisSetting && !d->m_axisSettings.contains(axisSetting)) {
- if (d->m_changeArbiter) {
- const auto change = Qt3DCore::QPropertyNodeAddedChangePtr::create(id(), axisSetting);
- change->setPropertyName("axisSettings");
- d->notifyObservers(change);
- }
-
+ d->update();
d->m_axisSettings.push_back(axisSetting);
}
}
@@ -185,12 +180,7 @@ void QAbstractPhysicalDevice::removeAxisSetting(QAxisSetting *axisSetting)
{
Q_D(QAbstractPhysicalDevice);
if (axisSetting && d->m_axisSettings.contains(axisSetting)) {
- if (d->m_changeArbiter) {
- const auto change = Qt3DCore::QPropertyNodeRemovedChangePtr::create(id(), axisSetting);
- change->setPropertyName("axisSettings");
- d->notifyObservers(change);
- }
-
+ d->update();
d->m_axisSettings.removeOne(axisSetting);
}
}
@@ -209,11 +199,8 @@ QVector<QAxisSetting *> QAbstractPhysicalDevice::axisSettings() const
*/
void QAbstractPhysicalDevicePrivate::postAxisEvent(int axis, qreal value)
{
- Q_Q(QAbstractPhysicalDevice);
- Qt3DCore::QPropertyUpdatedChangePtr change(new Qt3DCore::QPropertyUpdatedChange(q->id()));
- change->setPropertyName("axisEvent");
- change->setValue(QVariant::fromValue(QPair<int, qreal>(axis, value)));
- notifyObservers(change);
+ m_pendingAxisEvents.push_back({axis, value});
+ update();
}
/*
@@ -221,11 +208,8 @@ void QAbstractPhysicalDevicePrivate::postAxisEvent(int axis, qreal value)
*/
void QAbstractPhysicalDevicePrivate::postButtonEvent(int button, qreal value)
{
- Q_Q(QAbstractPhysicalDevice);
- Qt3DCore::QPropertyUpdatedChangePtr change(new Qt3DCore::QPropertyUpdatedChange(q->id()));
- change->setPropertyName("buttonEvent");
- change->setValue(QVariant::fromValue(QPair<int, qreal>(button, value)));
- notifyObservers(change);
+ m_pendingButtonsEvents.push_back({button, value});
+ update();
}
/*!
diff --git a/src/input/frontend/qabstractphysicaldevice_p.h b/src/input/frontend/qabstractphysicaldevice_p.h
index 8fa72aa02..fc8ad561c 100644
--- a/src/input/frontend/qabstractphysicaldevice_p.h
+++ b/src/input/frontend/qabstractphysicaldevice_p.h
@@ -76,6 +76,9 @@ public:
QHash<QString, int> m_axesHash;
QHash<QString, int> m_buttonsHash;
+ QVector<QPair<int, qreal>> m_pendingAxisEvents;
+ QVector<QPair<int, qreal>> m_pendingButtonsEvents;
+
void postAxisEvent(int axis, qreal value);
void postButtonEvent(int button, qreal value);
};
diff --git a/src/input/frontend/qinputaspect.cpp b/src/input/frontend/qinputaspect.cpp
index e79a9d944..05e860a4b 100644
--- a/src/input/frontend/qinputaspect.cpp
+++ b/src/input/frontend/qinputaspect.cpp
@@ -145,9 +145,9 @@ QInputAspect::QInputAspect(QInputAspectPrivate &dd, QObject *parent)
qRegisterMetaType<Qt3DInput::QAbstractPhysicalDevice*>();
- registerBackendType<QKeyboardDevice>(QBackendNodeMapperPtr(new Input::KeyboardDeviceFunctor(this, d_func()->m_inputHandler.data())));
+ registerBackendType<QKeyboardDevice, true>(QBackendNodeMapperPtr(new Input::KeyboardDeviceFunctor(this, d_func()->m_inputHandler.data())));
registerBackendType<QKeyboardHandler>(QBackendNodeMapperPtr(new Input::KeyboardHandlerFunctor(d_func()->m_inputHandler.data())));
- registerBackendType<QMouseDevice>(QBackendNodeMapperPtr(new Input::MouseDeviceFunctor(this, d_func()->m_inputHandler.data())));
+ registerBackendType<QMouseDevice, true>(QBackendNodeMapperPtr(new Input::MouseDeviceFunctor(this, d_func()->m_inputHandler.data())));
registerBackendType<QMouseHandler>(QBackendNodeMapperPtr(new Input::MouseHandlerFunctor(d_func()->m_inputHandler.data())));
registerBackendType<QAxis, true>(QBackendNodeMapperPtr(new Input::InputNodeFunctor<Input::Axis, Input::AxisManager>(d_func()->m_inputHandler->axisManager())));
registerBackendType<QAxisAccumulator>(QBackendNodeMapperPtr(new Input::InputNodeFunctor<Input::AxisAccumulator, Input::AxisAccumulatorManager>(d_func()->m_inputHandler->axisAccumulatorManager())));
@@ -159,7 +159,7 @@ QInputAspect::QInputAspect(QInputAspectPrivate &dd, QObject *parent)
registerBackendType<QInputChord>(QBackendNodeMapperPtr(new Input::InputNodeFunctor<Input::InputChord, Input::InputChordManager>(d_func()->m_inputHandler->inputChordManager())));
registerBackendType<QInputSequence>(QBackendNodeMapperPtr(new Input::InputNodeFunctor<Input::InputSequence, Input::InputSequenceManager>(d_func()->m_inputHandler->inputSequenceManager())));
registerBackendType<QLogicalDevice>(QBackendNodeMapperPtr(new Input::LogicalDeviceNodeFunctor(d_func()->m_inputHandler->logicalDeviceManager())));
- registerBackendType<QGenericInputDevice>(QBackendNodeMapperPtr(new Input::GenericDeviceBackendFunctor(this, d_func()->m_inputHandler.data())));
+ registerBackendType<QGenericInputDevice, true>(QBackendNodeMapperPtr(new Input::GenericDeviceBackendFunctor(this, d_func()->m_inputHandler.data())));
registerBackendType<QInputSettings>(QBackendNodeMapperPtr(new Input::InputSettingsFunctor(d_func()->m_inputHandler.data())));
registerBackendType<QAbstractPhysicalDeviceProxy>(QBackendNodeMapperPtr(new Input::PhysicalDeviceProxyNodeFunctor(d_func()->m_inputHandler->physicalDeviceProxyManager())));