From 9bcf72a7e235199f1c6f1b17cee0f82dad875b7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Higor=20Eur=C3=ADpedes?= Date: Wed, 1 Oct 2014 22:50:42 -0300 Subject: [PATCH] (SDL2) Implement joypad vendor/product id detection --- input/sdl_joypad.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/input/sdl_joypad.c b/input/sdl_joypad.c index 0d37315c8b..25dc134f36 100644 --- a/input/sdl_joypad.c +++ b/input/sdl_joypad.c @@ -88,8 +88,12 @@ static void pad_connect(unsigned id) { sdl_joypad_t *pad = &g_pads[id]; bool success = false; + int32_t product = 0; + int32_t vendor = 0; #ifdef HAVE_SDL2 + uint16_t *guid = NULL; + if (SDL_IsGameController(id)) { pad->controller = SDL_GameControllerOpen(id); @@ -117,11 +121,22 @@ static void pad_connect(unsigned id) } strlcpy(g_settings.input.device_names[id], pad_name(id), sizeof(g_settings.input.device_names[id])); - /* TODO - implement VID/PID? */ - input_config_autoconfigure_joypad(id, pad_name(id), - 0, 0, sdl_joypad.ident); - RARCH_LOG("[SDL]: Joypad #%u connected: %s.\n", id, pad_name(id)); +#ifdef HAVE_SDL2 + guid = (uint16_t*)SDL_JoystickGetGUID(pad->joypad).data; +#ifdef __linux + vendor = guid[2]; + product = guid[4]; +#elif _WIN32 + vendor = guid[0]; + product = guid[1]; +#endif +#endif + input_config_autoconfigure_joypad(id, pad_name(id), + vendor, product, sdl_joypad.ident); + + RARCH_LOG("[SDL]: Joypad #%u (%04x:%04x) connected: %s.\n", id, vendor, + product, pad_name(id)); #ifdef HAVE_SDL2