diff options
author | Mike Krus <mike.krus@kdab.com> | 2019-09-27 18:43:31 +0100 |
---|---|---|
committer | Mike Krus <mike.krus@kdab.com> | 2019-10-01 07:03:59 +0100 |
commit | e532a1cf37855f79a0a662d9b07786337e5fd220 (patch) | |
tree | 63e1db51740285e44bdc32ec49f7e135b5405f97 /src/input/frontend | |
parent | ecd455dc00ced212a156f678cd022c10652c8422 (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.cpp | 28 | ||||
-rw-r--r-- | src/input/frontend/qabstractphysicaldevice_p.h | 3 | ||||
-rw-r--r-- | src/input/frontend/qinputaspect.cpp | 6 |
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()))); |