diff --git a/project/src/backend/sdl/SDLApplication.cpp b/project/src/backend/sdl/SDLApplication.cpp index 57d2a3180..d9e57d3dc 100644 --- a/project/src/backend/sdl/SDLApplication.cpp +++ b/project/src/backend/sdl/SDLApplication.cpp @@ -428,7 +428,7 @@ namespace lime { if (SDLJoystick::Connect (event->jdevice.which)) { joystickEvent.type = JOYSTICK_CONNECT; - joystickEvent.id = event->jdevice.which; + joystickEvent.id = SDLJoystick::GetInstanceID (event->jdevice.which); JoystickEvent::Dispatch (&joystickEvent); diff --git a/project/src/backend/sdl/SDLJoystick.cpp b/project/src/backend/sdl/SDLJoystick.cpp index 4f6d33e1a..fe2dc0316 100644 --- a/project/src/backend/sdl/SDLJoystick.cpp +++ b/project/src/backend/sdl/SDLJoystick.cpp @@ -46,6 +46,13 @@ namespace lime { } + int SDLJoystick::GetInstanceID (int deviceID) { + + return SDL_JoystickInstanceID (joysticks[deviceID]); + + } + + void SDLJoystick::Init () { #if defined(IOS) || defined(ANDROID) || defined(TVOS) diff --git a/project/src/backend/sdl/SDLJoystick.h b/project/src/backend/sdl/SDLJoystick.h index 0f8ffa549..948dde59c 100644 --- a/project/src/backend/sdl/SDLJoystick.h +++ b/project/src/backend/sdl/SDLJoystick.h @@ -16,6 +16,7 @@ namespace lime { static bool Connect (int id); static bool Disconnect (int id); + static int GetInstanceID (int deviceID); static void Init (); static bool IsAccelerometer (int id);