From 6cc4591226f81ed7b27d6d4245375e18c4c40449 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Mon, 11 Jul 2016 14:00:09 +0200 Subject: [PATCH] evdev: Clamp axis values to the 0.0-1.0 range The values are expected to be in the 0.0-1.0 range (as indicated by the comment), and other parts of Dolphin also expect it to be in that range since the "full" axis has a -1.0 to 1.0 range. However, this is not always the case and fvalue can end up being outside of the range. This clamps fvalue to always be in the 0.0 and 1.0 range. --- Source/Core/InputCommon/ControllerInterface/evdev/evdev.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Source/Core/InputCommon/ControllerInterface/evdev/evdev.cpp b/Source/Core/InputCommon/ControllerInterface/evdev/evdev.cpp index 658a442420..1e5f702b70 100644 --- a/Source/Core/InputCommon/ControllerInterface/evdev/evdev.cpp +++ b/Source/Core/InputCommon/ControllerInterface/evdev/evdev.cpp @@ -9,6 +9,7 @@ #include "Common/Assert.h" #include "Common/Logging/Log.h" +#include "Common/MathUtil.h" #include "InputCommon/ControllerInterface/ControllerInterface.h" #include "InputCommon/ControllerInterface/evdev/evdev.h" @@ -196,7 +197,7 @@ ControlState evdevDevice::Axis::GetState() const libevdev_fetch_event_value(m_dev, EV_ABS, m_code, &value); // Value from 0.0 to 1.0 - ControlState fvalue = double(value - m_min) / double(m_range); + ControlState fvalue = MathUtil::Clamp(double(value - m_min) / double(m_range), 0.0, 1.0); // Split into two axis, each covering half the range from 0.0 to 1.0 if (m_upper)