diff --git a/project/src/backend/sdl/SDLJoystick.cpp b/project/src/backend/sdl/SDLJoystick.cpp index e365fc9fe..2ed1a96d7 100644 --- a/project/src/backend/sdl/SDLJoystick.cpp +++ b/project/src/backend/sdl/SDLJoystick.cpp @@ -6,18 +6,21 @@ namespace lime { static SDL_Joystick* accelerometer = 0; static SDL_JoystickID accelerometerID = -1; + std::map joystickIDs = std::map (); std::map joysticks = std::map (); - bool SDLJoystick::Connect (int id) { + bool SDLJoystick::Connect (int deviceID) { - if (id != accelerometerID) { + if (deviceID != accelerometerID) { - SDL_Joystick* joystick = SDL_JoystickOpen (id); + SDL_Joystick* joystick = SDL_JoystickOpen (deviceID); + int id = SDL_JoystickInstanceID (joystick); if (joystick) { joysticks[id] = joystick; + joystickIDs[deviceID] = id; return true; } @@ -36,7 +39,6 @@ namespace lime { SDL_Joystick* joystick = joysticks[id]; SDL_JoystickClose (joystick); joysticks.erase (id); - return true; } @@ -48,7 +50,7 @@ namespace lime { int SDLJoystick::GetInstanceID (int deviceID) { - return SDL_JoystickInstanceID (joysticks[deviceID]); + return joystickIDs[deviceID]; }