mirror of https://github.com/encounter/SDL.git
Emscripten: Fixed sending button and motion events for not opened joysticks.
SDL_SYS_JoystickUpdate() was implemented incorrectly. For every call to it all attached joysticks were checked. But actually only the given SDL_Joystick should be checked then. This allowed sending broken events for attached but not opened joysticks. It also checked the opened joysticks more often than actually needed.
This commit is contained in:
parent
e4be934f5d
commit
5c43207fad
|
@ -335,10 +335,10 @@ void
|
||||||
SDL_SYS_JoystickUpdate(SDL_Joystick * joystick)
|
SDL_SYS_JoystickUpdate(SDL_Joystick * joystick)
|
||||||
{
|
{
|
||||||
EmscriptenGamepadEvent gamepadState;
|
EmscriptenGamepadEvent gamepadState;
|
||||||
SDL_joylist_item *item = SDL_joylist;
|
SDL_joylist_item *item = (SDL_joylist_item *) joystick->hwdata;
|
||||||
int i, result, buttonState;
|
int i, result, buttonState;
|
||||||
|
|
||||||
while (item != NULL) {
|
if (item) {
|
||||||
result = emscripten_get_gamepad_status(item->index, &gamepadState);
|
result = emscripten_get_gamepad_status(item->index, &gamepadState);
|
||||||
if( result == EMSCRIPTEN_RESULT_SUCCESS) {
|
if( result == EMSCRIPTEN_RESULT_SUCCESS) {
|
||||||
if(gamepadState.timestamp == 0 || gamepadState.timestamp != item->timestamp) {
|
if(gamepadState.timestamp == 0 || gamepadState.timestamp != item->timestamp) {
|
||||||
|
@ -368,7 +368,6 @@ SDL_SYS_JoystickUpdate(SDL_Joystick * joystick)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
item = item->next;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue