From 5c43207fad3c18578846721642723545b9c276e3 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sun, 22 Feb 2015 21:00:35 +0100 Subject: [PATCH] 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. --- src/joystick/emscripten/SDL_sysjoystick.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/joystick/emscripten/SDL_sysjoystick.c b/src/joystick/emscripten/SDL_sysjoystick.c index cc5a6f6687b8f..4e480904791a7 100644 --- a/src/joystick/emscripten/SDL_sysjoystick.c +++ b/src/joystick/emscripten/SDL_sysjoystick.c @@ -335,10 +335,10 @@ void SDL_SYS_JoystickUpdate(SDL_Joystick * joystick) { EmscriptenGamepadEvent gamepadState; - SDL_joylist_item *item = SDL_joylist; + SDL_joylist_item *item = (SDL_joylist_item *) joystick->hwdata; int i, result, buttonState; - while (item != NULL) { + if (item) { result = emscripten_get_gamepad_status(item->index, &gamepadState); if( result == EMSCRIPTEN_RESULT_SUCCESS) { if(gamepadState.timestamp == 0 || gamepadState.timestamp != item->timestamp) { @@ -368,7 +368,6 @@ SDL_SYS_JoystickUpdate(SDL_Joystick * joystick) } } } - item = item->next; } }