From aff48c883938ffbb321eff1fb5886955143ee312 Mon Sep 17 00:00:00 2001 From: Paul Lemire Date: Mon, 30 Nov 2015 18:33:15 +0100 Subject: QInputAspect: launch an axis/action update frame Change-Id: I78038ed7a559647db87be800a8fe2d080da3620c Reviewed-by: Sean Harmer --- src/input/frontend/qinputaspect.cpp | 19 +++++++++++++++---- src/input/frontend/qinputaspect_p.h | 2 -- 2 files changed, 15 insertions(+), 6 deletions(-) (limited to 'src/input/frontend') 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 #include #include +#include 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 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 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 m_inputHandler; QScopedPointer m_cameraController; - QVector m_inputDeviceIntegrations; }; } // namespace Qt3DInput -- cgit v1.2.3