diff options
| author | Jordan Woyak <jordan.woyak@gmail.com> | 2019-10-15 15:35:07 -0500 |
|---|---|---|
| committer | Jordan Woyak <jordan.woyak@gmail.com> | 2019-10-15 15:35:07 -0500 |
| commit | b120b0872658335e1f23422e61b2e2b16f1aaab6 (patch) | |
| tree | f2060d74456dc8aa73cf6fc58ea01c8ef3be0d88 /Source/Core/InputCommon/ControllerEmu/ControlGroup | |
| parent | 4425d05c4a0965beedf45ccaddf566fbe7b9f7c6 (diff) | |
ControllerEmu: Clamp results of trigger/slider states to prevent integer overflow later on.
Diffstat (limited to 'Source/Core/InputCommon/ControllerEmu/ControlGroup')
3 files changed, 3 insertions, 3 deletions
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/MixedTriggers.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/MixedTriggers.cpp index 3b3e68f291..4cd8df7874 100644 --- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/MixedTriggers.cpp +++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/MixedTriggers.cpp @@ -48,7 +48,7 @@ void MixedTriggers::GetState(u16* const digital, const u16* bitmasks, ControlSta { const ControlState button_value = ApplyDeadzone(controls[i]->control_ref->State(), deadzone); ControlState analog_value = - ApplyDeadzone(controls[trigger_count + i]->control_ref->State(), deadzone); + std::min(ApplyDeadzone(controls[trigger_count + i]->control_ref->State(), deadzone), 1.0); // Apply threshold: if (button_value > threshold) diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Slider.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Slider.cpp index f8865329b9..0b702b6657 100644 --- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Slider.cpp +++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Slider.cpp @@ -34,6 +34,6 @@ Slider::StateData Slider::GetState() const ControlState deadzone = m_deadzone_setting.GetValue() / 100; const ControlState state = controls[1]->control_ref->State() - controls[0]->control_ref->State(); - return {ApplyDeadzone(state, deadzone)}; + return {std::clamp(ApplyDeadzone(state, deadzone), -1.0, 1.0)}; } } // namespace ControllerEmu diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.cpp index 900f30de3c..abc74915e5 100644 --- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.cpp +++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.cpp @@ -28,7 +28,7 @@ Triggers::StateData Triggers::GetState() StateData result(trigger_count); for (size_t i = 0; i < trigger_count; ++i) - result.data[i] = ApplyDeadzone(controls[i]->control_ref->State(), deadzone); + result.data[i] = std::min(ApplyDeadzone(controls[i]->control_ref->State(), deadzone), 1.0); return result; } |
