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_