summaryrefslogtreecommitdiffstats
path: root/src/input/backend/updateaxisactionjob.cpp
diff options
context:
space:
mode:
authorKevin Ottens <kevin.ottens@kdab.com>2016-04-29 08:42:52 +0200
committerKevin Ottens <kevin.ottens@kdab.com>2016-05-02 10:26:42 +0000
commit496d8b53b16bd0703ab06978f18fcbbb7d95e845 (patch)
tree0360d6ea61941e4da7ab6574ff1fb6c342e06c88 /src/input/backend/updateaxisactionjob.cpp
parent57f6c8bb2f7b220532d5ec4c46ee7d5b7f007067 (diff)
Split QAnalogAxisInput out of QAxisInput
The axis property of QAxisInput goes there. Change-Id: Ie226de652848909fc6e3a425612d877ef18b35f3 Task-number: QTBUG-51474 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/input/backend/updateaxisactionjob.cpp')
-rw-r--r--src/input/backend/updateaxisactionjob.cpp57
1 files changed, 34 insertions, 23 deletions
diff --git a/src/input/backend/updateaxisactionjob.cpp b/src/input/backend/updateaxisactionjob.cpp
index cf35cbac6..2a4b69c1f 100644
--- a/src/input/backend/updateaxisactionjob.cpp
+++ b/src/input/backend/updateaxisactionjob.cpp
@@ -169,34 +169,33 @@ void UpdateAxisActionJob::updateAxis(LogicalDevice *device)
const auto axisInputIds = axis->inputs();
for (const Qt3DCore::QNodeId axisInputId : axisInputIds) {
- AxisInput *axisInput = m_handler->axisInputManager()->lookupResource(axisInputId);
- ButtonAxisInput *buttonAxisInput = nullptr;
- if (!axisInput) {
- buttonAxisInput = m_handler->buttonAxisInputManager()->lookupResource(axisInputId);
- axisInput = buttonAxisInput;
+ AnalogAxisInput *analogInput = m_handler->analogAxisInputManager()->lookupResource(axisInputId);
+ if (analogInput) {
+ QAbstractPhysicalDeviceBackendNode *physicalDeviceBackend = findAxisInputPhysicalDevice(analogInput);
+ if (physicalDeviceBackend && analogInput->axis() != -1) {
+ // Update the value
+ axisValue += physicalDeviceBackend->processedAxisValue(analogInput->axis());
+ }
+ continue;
}
- Q_ASSERT(axisInput);
- QAbstractPhysicalDeviceBackendNode *physicalDeviceBackend = nullptr;
+ ButtonAxisInput *buttonInput = m_handler->buttonAxisInputManager()->lookupResource(axisInputId);
+ if (buttonInput) {
+ QAbstractPhysicalDeviceBackendNode *physicalDeviceBackend = findAxisInputPhysicalDevice(buttonInput);
+ if (physicalDeviceBackend != nullptr) {
+ // Update the value
+ const QVector<int> buttons = buttonInput ? buttonInput->buttons() : QVector<int>();
+ if (!buttons.isEmpty()) {
+ // TO DO: Linear Curver for the progression of the scale value
+ if (anyOfRequiredButtonsPressed(buttons, physicalDeviceBackend))
+ axisValue += buttonInput->scale();
+ }
+ }
- const auto integrations = m_handler->inputDeviceIntegrations();
- for (QInputDeviceIntegration *integration : integrations) {
- if ((physicalDeviceBackend = integration->physicalDevice(axisInput->sourceDevice())) != nullptr)
- break;
+ continue;
}
- if (physicalDeviceBackend != nullptr) {
- // Update the value
- const QVector<int> buttons = buttonAxisInput ? buttonAxisInput->buttons() : QVector<int>();
- // Axis was specified -> we take this as the base value
- if (axisInput->axis() != -1)
- axisValue += physicalDeviceBackend->processedAxisValue(axisInput->axis());
- else if (!buttons.isEmpty()) {
- // TO DO: Linear Curver for the progression of the scale value
- if (anyOfRequiredButtonsPressed(buttons, physicalDeviceBackend))
- axisValue += buttonAxisInput->scale();
- }
- }
+ Q_UNREACHABLE();
}
// Clamp the axisValue -1/1
@@ -205,6 +204,18 @@ void UpdateAxisActionJob::updateAxis(LogicalDevice *device)
}
}
+QAbstractPhysicalDeviceBackendNode *UpdateAxisActionJob::findAxisInputPhysicalDevice(AxisInput *axisInput)
+{
+ const auto integrations = m_handler->inputDeviceIntegrations();
+ for (QInputDeviceIntegration *integration : integrations) {
+ QAbstractPhysicalDeviceBackendNode *physicalDeviceBackend = integration->physicalDevice(axisInput->sourceDevice());
+ if (physicalDeviceBackend)
+ return physicalDeviceBackend;
+ }
+
+ return nullptr;
+}
+
} // Input
} // Qt3DInput