gamepad: Several gamepad mapping functions now follow the SDL_GetStringRule.
Reference Issue #10229.
This commit is contained in:
@@ -416,13 +416,12 @@ void UpdateGamepadImageFromGamepad(GamepadImage *ctx, SDL_Gamepad *gamepad)
|
||||
}
|
||||
|
||||
ctx->type = SDL_GetGamepadType(gamepad);
|
||||
char *mapping = SDL_GetGamepadMapping(gamepad);
|
||||
const char *mapping = SDL_GetGamepadMapping(gamepad);
|
||||
if (mapping) {
|
||||
if (SDL_strstr(mapping, "SDL_GAMECONTROLLER_USE_BUTTON_LABELS")) {
|
||||
/* Just for display purposes */
|
||||
ctx->type = SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_PRO;
|
||||
}
|
||||
SDL_free(mapping);
|
||||
}
|
||||
|
||||
for (i = 0; i < SDL_GAMEPAD_BUTTON_TOUCHPAD; ++i) {
|
||||
@@ -750,7 +749,7 @@ void SetGamepadDisplayArea(GamepadDisplay *ctx, const SDL_FRect *area)
|
||||
SDL_copyp(&ctx->area, area);
|
||||
}
|
||||
|
||||
static SDL_bool GetBindingString(const char *label, char *mapping, char *text, size_t size)
|
||||
static SDL_bool GetBindingString(const char *label, const char *mapping, char *text, size_t size)
|
||||
{
|
||||
char *key;
|
||||
char *value, *end;
|
||||
@@ -791,7 +790,7 @@ static SDL_bool GetBindingString(const char *label, char *mapping, char *text, s
|
||||
return found;
|
||||
}
|
||||
|
||||
static SDL_bool GetButtonBindingString(SDL_GamepadButton button, char *mapping, char *text, size_t size)
|
||||
static SDL_bool GetButtonBindingString(SDL_GamepadButton button, const char *mapping, char *text, size_t size)
|
||||
{
|
||||
char label[32];
|
||||
SDL_bool baxy_mapping = SDL_FALSE;
|
||||
@@ -839,7 +838,7 @@ static SDL_bool GetButtonBindingString(SDL_GamepadButton button, char *mapping,
|
||||
}
|
||||
}
|
||||
|
||||
static SDL_bool GetAxisBindingString(SDL_GamepadAxis axis, int direction, char *mapping, char *text, size_t size)
|
||||
static SDL_bool GetAxisBindingString(SDL_GamepadAxis axis, int direction, const char *mapping, char *text, size_t size)
|
||||
{
|
||||
char label[32];
|
||||
|
||||
@@ -1022,7 +1021,7 @@ void RenderGamepadDisplay(GamepadDisplay *ctx, SDL_Gamepad *gamepad)
|
||||
const float arrow_extent = 48.0f;
|
||||
SDL_FRect dst, rect, highlight;
|
||||
Uint8 r, g, b, a;
|
||||
char *mapping = NULL;
|
||||
const char *mapping = NULL;
|
||||
SDL_bool has_accel;
|
||||
SDL_bool has_gyro;
|
||||
|
||||
@@ -1286,8 +1285,6 @@ void RenderGamepadDisplay(GamepadDisplay *ctx, SDL_Gamepad *gamepad)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SDL_free(mapping);
|
||||
}
|
||||
|
||||
void DestroyGamepadDisplay(GamepadDisplay *ctx)
|
||||
|
||||
@@ -973,6 +973,7 @@ static void DelController(SDL_JoystickID id)
|
||||
|
||||
static void HandleGamepadRemapped(SDL_JoystickID id)
|
||||
{
|
||||
const char *sdlmapping;
|
||||
char *mapping;
|
||||
int i = FindController(id);
|
||||
|
||||
@@ -987,7 +988,8 @@ static void HandleGamepadRemapped(SDL_JoystickID id)
|
||||
}
|
||||
|
||||
/* Get the current mapping */
|
||||
mapping = SDL_GetGamepadMapping(controllers[i].gamepad);
|
||||
sdlmapping = SDL_GetGamepadMapping(controllers[i].gamepad);
|
||||
mapping = sdlmapping ? SDL_strdup(sdlmapping) : NULL;
|
||||
|
||||
/* Make sure the mapping has a valid name */
|
||||
if (mapping && !MappingHasName(mapping)) {
|
||||
@@ -1063,10 +1065,9 @@ static void HandleGamepadAdded(SDL_JoystickID id, SDL_bool verbose)
|
||||
}
|
||||
|
||||
if (verbose) {
|
||||
char *mapping = SDL_GetGamepadMapping(gamepad);
|
||||
const char *mapping = SDL_GetGamepadMapping(gamepad);
|
||||
if (mapping) {
|
||||
SDL_Log("Mapping: %s\n", mapping);
|
||||
SDL_free(mapping);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -2053,14 +2054,13 @@ int main(int argc, char *argv[])
|
||||
|
||||
if (show_mappings) {
|
||||
int count = 0;
|
||||
char **mappings = SDL_GetGamepadMappings(&count);
|
||||
const char * const *mappings = SDL_GetGamepadMappings(&count);
|
||||
int map_i;
|
||||
SDL_Log("Supported mappings:\n");
|
||||
for (map_i = 0; map_i < count; ++map_i) {
|
||||
SDL_Log("\t%s\n", mappings[map_i]);
|
||||
}
|
||||
SDL_Log("\n");
|
||||
SDL_free(mappings);
|
||||
}
|
||||
|
||||
/* Create a window to display gamepad state */
|
||||
|
||||
Reference in New Issue
Block a user