Skip to content
Permalink
Browse files

Only apply the jitter filter to prevent unexpected motion on axes tha…

…t haven't been touched.
  • Loading branch information
slouken committed Sep 21, 2017
1 parent 5ae90ef commit eaab6098eb268e57ff8ff6ccc50dcc0656df9514
Showing with 5 additions and 4 deletions.
  1. +5 −4 src/joystick/SDL_joystick.c
@@ -661,7 +661,6 @@ int
SDL_PrivateJoystickAxis(SDL_Joystick * joystick, Uint8 axis, Sint16 value)
{
int posted;
const int MAX_ALLOWED_JITTER = SDL_JOYSTICK_AXIS_MAX / 80; /* ShanWan PS3 controller needed 96 */

/* Make sure we're not getting garbage or duplicate events */
if (axis >= joystick->naxes) {
@@ -673,10 +672,12 @@ SDL_PrivateJoystickAxis(SDL_Joystick * joystick, Uint8 axis, Sint16 value)
joystick->axes[axis].zero = value;
joystick->axes[axis].has_initial_value = SDL_TRUE;
}
if (SDL_abs(value - joystick->axes[axis].value) <= MAX_ALLOWED_JITTER) {
return 0;
}
if (!joystick->axes[axis].sent_initial_value) {
/* Make sure we don't send motion until there's real activity on this axis */
const int MAX_ALLOWED_JITTER = SDL_JOYSTICK_AXIS_MAX / 80; /* ShanWan PS3 controller needed 96 */
if (SDL_abs(value - joystick->axes[axis].value) <= MAX_ALLOWED_JITTER) {
return 0;
}
joystick->axes[axis].sent_initial_value = SDL_TRUE;
joystick->axes[axis].value = value; /* Just so we pass the check above */
SDL_PrivateJoystickAxis(joystick, axis, joystick->axes[axis].initial_value);

0 comments on commit eaab609

Please sign in to comment.