mirror of
https://github.com/Relintai/sdl2_frt.git
synced 2024-12-20 22:16:49 +01:00
Only apply the jitter filter to prevent unexpected motion on axes that haven't been touched.
This commit is contained in:
parent
5ae90ef67a
commit
eaab6098eb
@ -661,7 +661,6 @@ int
|
|||||||
SDL_PrivateJoystickAxis(SDL_Joystick * joystick, Uint8 axis, Sint16 value)
|
SDL_PrivateJoystickAxis(SDL_Joystick * joystick, Uint8 axis, Sint16 value)
|
||||||
{
|
{
|
||||||
int posted;
|
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 */
|
/* Make sure we're not getting garbage or duplicate events */
|
||||||
if (axis >= joystick->naxes) {
|
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].zero = value;
|
||||||
joystick->axes[axis].has_initial_value = SDL_TRUE;
|
joystick->axes[axis].has_initial_value = SDL_TRUE;
|
||||||
}
|
}
|
||||||
|
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) {
|
if (SDL_abs(value - joystick->axes[axis].value) <= MAX_ALLOWED_JITTER) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (!joystick->axes[axis].sent_initial_value) {
|
|
||||||
joystick->axes[axis].sent_initial_value = SDL_TRUE;
|
joystick->axes[axis].sent_initial_value = SDL_TRUE;
|
||||||
joystick->axes[axis].value = value; /* Just so we pass the check above */
|
joystick->axes[axis].value = value; /* Just so we pass the check above */
|
||||||
SDL_PrivateJoystickAxis(joystick, axis, joystick->axes[axis].initial_value);
|
SDL_PrivateJoystickAxis(joystick, axis, joystick->axes[axis].initial_value);
|
||||||
|
Loading…
Reference in New Issue
Block a user