summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/ControllerInterface/evdev/evdev.cpp
diff options
context:
space:
mode:
authorLéo Lam <leo@innovatetechnologi.es>2016-07-11 14:00:09 +0200
committerLéo Lam <leo@innovatetechnologi.es>2016-07-11 14:00:09 +0200
commit6cc4591226f81ed7b27d6d4245375e18c4c40449 (patch)
tree08efdcb0f4ea6e585526339f6b0b4b31714c3784 /Source/Core/InputCommon/ControllerInterface/evdev/evdev.cpp
parentf57aec05257b23b097609263a7352aecca75b874 (diff)
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.
Diffstat (limited to 'Source/Core/InputCommon/ControllerInterface/evdev/evdev.cpp')
-rw-r--r--Source/Core/InputCommon/ControllerInterface/evdev/evdev.cpp3
1 files changed, 2 insertions, 1 deletions
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)