You shouldn't get axis and hat events when your application doesn't have focus (unless you use the SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS hint)
parent
f8b75b1a14
commit
7b7828a46e
|
@ -502,21 +502,22 @@ SDL_PrivateJoystickAxis(SDL_Joystick * joystick, Uint8 axis, Sint16 value)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* We ignore events if we don't have keyboard focus, except for centering
|
||||||
|
* events.
|
||||||
|
*/
|
||||||
|
if (SDL_PrivateJoystickShouldIgnoreEvent()) {
|
||||||
|
if ((value > 0 && value >= joystick->axes[axis]) ||
|
||||||
|
(value < 0 && value <= joystick->axes[axis])) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Update internal joystick state */
|
/* Update internal joystick state */
|
||||||
if (value == joystick->axes[axis]) {
|
if (value == joystick->axes[axis]) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
joystick->axes[axis] = value;
|
joystick->axes[axis] = value;
|
||||||
|
|
||||||
/* We ignore events if we don't have keyboard focus, except for centering
|
|
||||||
* events.
|
|
||||||
*/
|
|
||||||
if (SDL_PrivateJoystickShouldIgnoreEvent()) {
|
|
||||||
if (!(joystick->closed && joystick->uncentered)) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Post the event, if desired */
|
/* Post the event, if desired */
|
||||||
posted = 0;
|
posted = 0;
|
||||||
#if !SDL_EVENTS_DISABLED
|
#if !SDL_EVENTS_DISABLED
|
||||||
|
@ -542,18 +543,20 @@ SDL_PrivateJoystickHat(SDL_Joystick * joystick, Uint8 hat, Uint8 value)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Update internal joystick state */
|
|
||||||
joystick->hats[hat] = value;
|
|
||||||
|
|
||||||
/* We ignore events if we don't have keyboard focus, except for centering
|
/* We ignore events if we don't have keyboard focus, except for centering
|
||||||
* events.
|
* events.
|
||||||
*/
|
*/
|
||||||
if (SDL_PrivateJoystickShouldIgnoreEvent()) {
|
if (SDL_PrivateJoystickShouldIgnoreEvent()) {
|
||||||
if (!(joystick->closed && joystick->uncentered)) {
|
if (value != SDL_HAT_CENTERED) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Update internal joystick state */
|
||||||
|
if (value == joystick->hats[hat]) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
joystick->hats[hat] = value;
|
||||||
|
|
||||||
/* Post the event, if desired */
|
/* Post the event, if desired */
|
||||||
posted = 0;
|
posted = 0;
|
||||||
|
@ -633,11 +636,16 @@ SDL_PrivateJoystickButton(SDL_Joystick * joystick, Uint8 button, Uint8 state)
|
||||||
|
|
||||||
/* We ignore events if we don't have keyboard focus, except for button
|
/* We ignore events if we don't have keyboard focus, except for button
|
||||||
* release. */
|
* release. */
|
||||||
if (state == SDL_PRESSED && SDL_PrivateJoystickShouldIgnoreEvent()) {
|
if (SDL_PrivateJoystickShouldIgnoreEvent()) {
|
||||||
return 0;
|
if (state == SDL_PRESSED) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Update internal joystick state */
|
/* Update internal joystick state */
|
||||||
|
if (state == joystick->buttons[button]) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
joystick->buttons[button] = state;
|
joystick->buttons[button] = state;
|
||||||
|
|
||||||
/* Post the event, if desired */
|
/* Post the event, if desired */
|
||||||
|
|
Loading…
Reference in New Issue