Retain SDL joystick IDs

This commit is contained in:
Joshua Granick
2019-04-04 10:20:35 -07:00
parent 42649d1b9a
commit 2cb09c55df

View File

@@ -6,18 +6,21 @@ namespace lime {
static SDL_Joystick* accelerometer = 0;
static SDL_JoystickID accelerometerID = -1;
std::map<int, int> joystickIDs = std::map<int, int> ();
std::map<int, SDL_Joystick*> joysticks = std::map<int, SDL_Joystick*> ();
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];
}