summaryrefslogtreecommitdiffstats
path: root/src/input/frontend
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2015-11-30 18:33:15 +0100
committerPaul Lemire <paul.lemire@kdab.com>2015-11-30 21:34:56 +0000
commitaff48c883938ffbb321eff1fb5886955143ee312 (patch)
tree7e5564b25ced35d05ba58cbf1d038fe1cdb2b2dd /src/input/frontend
parente45f5f30ca0e70e9022003f9f04cb65f8bd7456c (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.cpp19
-rw-r--r--src/input/frontend/qinputaspect_p.h2
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