Fixed event spam when using the Nintendo Switch controller

There is no filtering on the Nintendo Switch Pro controller thumbstick, so there will frequently be events with very slight change. These are turned into "not pressed" events, which cancel "pressed" events from keys and buttons.

This change filters out up to 5% jitter, but it might be worth revisiting whether "not pressed" events should cancel "pressed" events.

(cherry picked from commit e5b0f86260)
This commit is contained in:
Sam Lantinga 2021-12-16 09:09:06 -08:00 committed by Rémi Verschelde
parent 563de4c6f4
commit 3c752893c5
No known key found for this signature in database
GPG Key ID: C3336907360768E1

View File

@ -811,7 +811,10 @@ void InputDefault::joy_axis(int p_device, int p_axis, const JoyAxis &p_value) {
Joypad &joy = joy_names[p_device];
if (joy.last_axis[p_axis] == p_value.value) {
// Make sure that we don't generate events for up to 5% jitter
// This is needed for Nintendo Switch Pro controllers, which jitter at rest
const float MIN_AXIS_CHANGE = 0.05f;
if (fabs(joy.last_axis[p_axis] - p_value.value) < MIN_AXIS_CHANGE) {
return;
}