Mercurial > repos > blastem
changeset 2315:b67e4e930fa4
Workaround for SDL2 being unreliable in updating mapping for already "open" game controller
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 31 Mar 2023 00:17:40 -0700 |
parents | 59fd8aa352e2 |
children | 523ab225815b |
files | controller_info.c render_sdl.c render_sdl.h |
diffstat | 3 files changed, 8 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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
--- 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};
--- 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_