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.
main
Philipp Wiesemann 2015-02-22 21:00:35 +01:00
parent e4be934f5d
commit 5c43207fad
1 changed files with 2 additions and 3 deletions

View File

@ -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;
} }
} }