Emscripten: Fixed sending button and motion events for not opened joysticks.
authorPhilipp Wiesemann <philipp.wiesemann@arcor.de>
Sun, 22 Feb 2015 21:00:35 +0100
changeset 9372 a9bf04588f17
parent 9371 375799828431
child 9373 679eb3986e37
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
--- a/src/joystick/emscripten/SDL_sysjoystick.c	Sat Feb 21 00:33:25 2015 -0500
+++ b/src/joystick/emscripten/SDL_sysjoystick.c	Sun Feb 22 21:00:35 2015 +0100
@@ -335,10 +335,10 @@
 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 @@
                 }
             }
         }
-        item = item->next;
     }
 }