Emscripten: Fixed sending SDL_JOYDEVICEADDED events with an index out of range.
authorPhilipp Wiesemann <philipp.wiesemann@arcor.de>
Sat, 14 Feb 2015 15:22:04 +0100
changeset 9346 944aa9c47940
parent 9345 bf0874f4fd3a
child 9347 847eb2564aa4
Emscripten: Fixed sending SDL_JOYDEVICEADDED events with an index out of range. SDL_JOYDEVICEADDED events must contain the device index which is a value between 0 and the number of connected joysticks. The old implementation included a value based on the instance id instead. It worked in some cases because the values are similar initially. But after disconnecting joysticks this is no more the case and the always increasing instance id becomes larger than number of joysticks.
src/joystick/emscripten/SDL_sysjoystick.c
--- a/src/joystick/emscripten/SDL_sysjoystick.c	Sat Feb 14 15:16:41 2015 +0100
+++ b/src/joystick/emscripten/SDL_sysjoystick.c	Sat Feb 14 15:22:04 2015 +0100
@@ -112,7 +112,7 @@
     event.type = SDL_JOYDEVICEADDED;
 
     if (SDL_GetEventState(event.type) == SDL_ENABLE) {
-        event.jdevice.which = item->device_instance - 1;
+        event.jdevice.which = item->index;
         if ( (SDL_EventOK == NULL) ||
              (*SDL_EventOK) (SDL_EventOKParam, &event) ) {
             SDL_PushEvent(&event);