# HG changeset patch # User Michael Pavone # Date 1680247060 25200 # Node ID b67e4e930fa4b5235b3c69cda0ff0142470d382d # Parent 59fd8aa352e25c1316b031dc9ff63eee79a00289 Workaround for SDL2 being unreliable in updating mapping for already "open" game controller diff -r 59fd8aa352e2 -r b67e4e930fa4 controller_info.c --- a/controller_info.c Thu Mar 30 23:20:12 2023 -0700 +++ b/controller_info.c Fri Mar 31 00:17:40 2023 -0700 @@ -225,7 +225,10 @@ persist_config_at(config, info_config, "controller_types.cfg"); const char *parts[] = {guid_string, ",", mapping_string}; char * full = alloc_concat_m(3, parts); + uint8_t gc_events = render_are_gamepad_events_enabled(); + render_enable_gamepad_events(0); SDL_GameControllerAddMapping(full); + render_enable_gamepad_events(gc_events); free(full); handle_joy_added(joystick); #endif diff -r 59fd8aa352e2 -r b67e4e930fa4 render_sdl.c --- a/render_sdl.c Thu Mar 30 23:20:12 2023 -0700 +++ b/render_sdl.c Fri Mar 31 00:17:40 2023 -0700 @@ -778,6 +778,10 @@ } } } +uint8_t render_are_gamepad_events_enabled(void) +{ + return gc_events_enabled; +} static uint32_t overscan_top[NUM_VID_STD] = {2, 21, 51}; static uint32_t overscan_bot[NUM_VID_STD] = {1, 17, 48}; diff -r 59fd8aa352e2 -r b67e4e930fa4 render_sdl.h --- a/render_sdl.h Thu Mar 30 23:20:12 2023 -0700 +++ b/render_sdl.h Fri Mar 31 00:17:40 2023 -0700 @@ -11,5 +11,6 @@ int render_lookup_button(char *name); int render_lookup_axis(char *name); void render_enable_gamepad_events(uint8_t enabled); +uint8_t render_are_gamepad_events_enabled(void); #endif //RENDER_SDL_H_