diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2015-11-30 18:33:15 +0100 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2015-11-30 21:34:56 +0000 |
commit | aff48c883938ffbb321eff1fb5886955143ee312 (patch) | |
tree | 7e5564b25ced35d05ba58cbf1d038fe1cdb2b2dd /src/input/frontend | |
parent | e45f5f30ca0e70e9022003f9f04cb65f8bd7456c (diff) |
QInputAspect: launch an axis/action update frame
Change-Id: I78038ed7a559647db87be800a8fe2d080da3620c
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/input/frontend')
-rw-r--r-- | src/input/frontend/qinputaspect.cpp | 19 | ||||
-rw-r--r-- | src/input/frontend/qinputaspect_p.h | 2 |
2 files changed, 15 insertions, 6 deletions
diff --git a/src/input/frontend/qinputaspect.cpp b/src/input/frontend/qinputaspect.cpp index b9277774d..dd214c163 100644 --- a/src/input/frontend/qinputaspect.cpp +++ b/src/input/frontend/qinputaspect.cpp @@ -73,6 +73,7 @@ #include <Qt3DInput/private/logicaldevice_p.h> #include <Qt3DInput/private/inputbackendnodefunctor_p.h> #include <Qt3DInput/private/inputmanagers_p.h> +#include <Qt3DInput/private/updateaxisactionjob_p.h> QT_BEGIN_NAMESPACE @@ -121,7 +122,7 @@ void QInputAspect::loadInputDevicePlugins() Q_FOREACH (QString key, keys) { Qt3DInput::QInputDeviceIntegration *integration = QInputDeviceIntegrationFactory::create(key, QStringList()); if (integration != Q_NULLPTR) { - d->m_inputDeviceIntegrations.push_back(integration); + d->m_inputHandler->addInputDeviceIntegration(integration); // Initialize will allow the InputDeviceIntegration to // register their frontend / backend types, // create their managers @@ -142,7 +143,7 @@ QAbstractPhysicalDevice *QInputAspect::createPhysicalDevice(const QString &name) { Q_D(QInputAspect); QAbstractPhysicalDevice *device = Q_NULLPTR; - Q_FOREACH (Qt3DInput::QInputDeviceIntegration *integration, d->m_inputDeviceIntegrations) { + Q_FOREACH (Qt3DInput::QInputDeviceIntegration *integration, d->m_inputHandler->inputDeviceIntegrations()) { if ((device = integration->createPhysicalDevice(name)) != Q_NULLPTR) break; } @@ -164,11 +165,21 @@ QVector<QAspectJobPtr> QInputAspect::jobsToExecute(qint64 time) jobs.append(d->m_inputHandler->keyboardJobs()); jobs.append(d->m_inputHandler->mouseJobs()); - Q_FOREACH (QInputDeviceIntegration *integration, d->m_inputDeviceIntegrations) + Q_FOREACH (QInputDeviceIntegration *integration, d->m_inputHandler->inputDeviceIntegrations()) jobs += integration->jobsToExecute(time); + // Jobs that update Axis/Action (store combined axis/action value) + QVector<QAspectJobPtr> axisActionJobs; + Q_FOREACH (Input::HLogicalDevice devHandle, d->m_inputHandler->logicalDeviceManager()->activeDevices()) { + QAspectJobPtr updateAxisActionJob(new Input::UpdateAxisActionJob(d->m_inputHandler.data(), devHandle)); + Q_FOREACH (const QAspectJobPtr job, jobs) + updateAxisActionJob->addDependency(job); + axisActionJobs.push_back(updateAxisActionJob); + } + + jobs += axisActionJobs; + // TO DO: - // Have Jobs that update Axis/Action (store combined axis/action value) // Have Jobs that update the LogicalDevice // Have Jobs that update the AxisHandlers/ActionHandlers diff --git a/src/input/frontend/qinputaspect_p.h b/src/input/frontend/qinputaspect_p.h index 6b9636ad7..f1de52144 100644 --- a/src/input/frontend/qinputaspect_p.h +++ b/src/input/frontend/qinputaspect_p.h @@ -55,7 +55,6 @@ QT_BEGIN_NAMESPACE namespace Qt3DInput { class QInputAspect; -class QInputDeviceIntegration; namespace Input { class CameraController; @@ -70,7 +69,6 @@ public: Q_DECLARE_PUBLIC(QInputAspect) QScopedPointer<Input::InputHandler> m_inputHandler; QScopedPointer<Input::CameraController> m_cameraController; - QVector<Qt3DInput::QInputDeviceIntegration *> m_inputDeviceIntegrations; }; } // namespace Qt3DInput |