static boolean SDLOpenJoystick(int nr)
{
- if (nr < 0 || nr > MAX_PLAYERS)
+ if (nr < 0 || nr >= MAX_PLAYERS)
return FALSE;
#if defined(TARGET_SDL2)
static void SDLCloseJoystick(int nr)
{
- if (nr < 0 || nr > MAX_PLAYERS)
+ if (nr < 0 || nr >= MAX_PLAYERS)
return;
#if 1
boolean SDLCheckJoystickOpened(int nr)
{
- if (nr < 0 || nr > MAX_PLAYERS)
+ if (nr < 0 || nr >= MAX_PLAYERS)
return FALSE;
#if defined(TARGET_SDL2)
int axis_id = axis_id_raw % 2;
#endif
+ if (nr < 0 || nr >= MAX_PLAYERS)
+ return;
+
if (axis_id == -1)
return;
int button_id = button_id_raw % 2;
#endif
+ if (nr < 0 || nr >= MAX_PLAYERS)
+ return;
+
if (button_id == -1)
return;
static boolean sdl_joystick_subsystem_initialized = FALSE;
boolean print_warning = !sdl_joystick_subsystem_initialized;
#if defined(TARGET_SDL2)
- char *mappings_file = "gamecontrollerdb.txt";
+ char *mappings_file_base = getPath2(options.ro_base_directory,
+ GAMECONTROLLER_BASENAME);
+ char *mappings_file_user = getPath2(getUserGameDataDir(),
+ GAMECONTROLLER_BASENAME);
int num_mappings;
#endif
int i;
}
#if defined(TARGET_SDL2)
- num_mappings = SDL_GameControllerAddMappingsFromFile(mappings_file);
+ num_mappings = SDL_GameControllerAddMappingsFromFile(mappings_file_base);
if (num_mappings != -1)
- Error(ERR_INFO, "%d game controller mapping(s) added", num_mappings);
+ Error(ERR_INFO, "%d game controller base mapping(s) added", num_mappings);
else
- Error(ERR_WARN, "no game controller mappings found");
+ Error(ERR_WARN, "no game controller base mappings found");
+
+ num_mappings = SDL_GameControllerAddMappingsFromFile(mappings_file_user);
+
+ if (num_mappings != -1)
+ Error(ERR_INFO, "%d game controller user mapping(s) added", num_mappings);
+ else
+ Error(ERR_WARN, "no game controller user mappings found");
Error(ERR_INFO, "%d joystick(s) found:", SDL_NumJoysticks());
+ checked_free(mappings_file_base);
+ checked_free(mappings_file_user);
+
for (i = 0; i < SDL_NumJoysticks(); i++)
{
const char *name, *type;
joystick_nr = -1;
}
- /* misuse joystick file descriptor variable to store joystick number */
- joystick.fd[i] = joystick_nr;
+ /* store configured joystick number for each player */
+ joystick.nr[i] = joystick_nr;
}
/* now open all connected joysticks (regardless if configured or not) */