summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar bunnei2021-10-13 15:15:18 -0700
committerGravatar GitHub2021-10-13 15:15:18 -0700
commit2643752f9343a7464e46c813104333911ad070fb (patch)
treecd726588a3bb623c5ab0c27a0c9b504399d1e697 /src
parentMerge pull request #7158 from ameerj/window-900p (diff)
parentinput_common/sdl: Fix joystick range (diff)
downloadyuzu-2643752f9343a7464e46c813104333911ad070fb.tar.gz
yuzu-2643752f9343a7464e46c813104333911ad070fb.tar.xz
yuzu-2643752f9343a7464e46c813104333911ad070fb.zip
Merge pull request #7142 from german77/sdl_range
input_common/sdl: Fix joystick range
Diffstat (limited to '')
-rw-r--r--src/input_common/sdl/sdl_impl.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/input_common/sdl/sdl_impl.cpp b/src/input_common/sdl/sdl_impl.cpp
index ab6211b29..ecb00d428 100644
--- a/src/input_common/sdl/sdl_impl.cpp
+++ b/src/input_common/sdl/sdl_impl.cpp
@@ -170,7 +170,8 @@ public:
170 float GetAxis(int axis, float range, float offset) const { 170 float GetAxis(int axis, float range, float offset) const {
171 std::lock_guard lock{mutex}; 171 std::lock_guard lock{mutex};
172 const float value = static_cast<float>(state.axes.at(axis)) / 32767.0f; 172 const float value = static_cast<float>(state.axes.at(axis)) / 32767.0f;
173 return (value + offset) / range; 173 const float offset_scale = (value + offset) > 0.0f ? 1.0f + offset : 1.0f - offset;
174 return (value + offset) / range / offset_scale;
174 } 175 }
175 176
176 bool RumblePlay(u16 amp_low, u16 amp_high) { 177 bool RumblePlay(u16 amp_low, u16 amp_high) {
@@ -789,8 +790,8 @@ public:
789 const std::string invert_y_value = params.Get("invert_y", "+"); 790 const std::string invert_y_value = params.Get("invert_y", "+");
790 const bool invert_x = invert_x_value == "-"; 791 const bool invert_x = invert_x_value == "-";
791 const bool invert_y = invert_y_value == "-"; 792 const bool invert_y = invert_y_value == "-";
792 const float offset_x = params.Get("offset_x", 0.0f); 793 const float offset_x = std::clamp(params.Get("offset_x", 0.0f), -0.99f, 0.99f);
793 const float offset_y = params.Get("offset_y", 0.0f); 794 const float offset_y = std::clamp(params.Get("offset_y", 0.0f), -0.99f, 0.99f);
794 auto joystick = state.GetSDLJoystickByGUID(guid, port); 795 auto joystick = state.GetSDLJoystickByGUID(guid, port);
795 796
796 // This is necessary so accessing GetAxis with axis_x and axis_y won't crash 797 // This is necessary so accessing GetAxis with axis_x and axis_y won't crash