From 91fb8e8e11869180df27f2a8ed435519187e7287 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Fri, 19 Aug 2022 01:09:34 +1000 Subject: osd/modules/input: Include device serial number in ID when available for SDL joysticks. --- src/osd/modules/input/input_sdl.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/osd/modules/input/input_sdl.cpp b/src/osd/modules/input/input_sdl.cpp index a3bbe494194..2c8f604c9a2 100644 --- a/src/osd/modules/input/input_sdl.cpp +++ b/src/osd/modules/input/input_sdl.cpp @@ -1039,6 +1039,13 @@ public: char guid_str[256]; guid_str[0] = '\0'; SDL_JoystickGetGUIDString(guid, guid_str, sizeof(guid_str) - 1); + char const *serial = nullptr; +#if SDL_VERSION_ATLEAST(2, 0, 14) + serial = SDL_JoystickGetSerial(joy); +#endif + std::string id(guid_str); + if (serial) + id.append(1, '-').append(serial); sdl_joystick_device *const devinfo = m_sixaxis_mode ? &devicelist().create_device(machine, name ? name : guid_str, guid_str, *this) @@ -1053,20 +1060,16 @@ public: devinfo->sdl_state.device = joy; devinfo->sdl_state.joystick_id = SDL_JoystickInstanceID(joy); devinfo->sdl_state.hapdevice = SDL_HapticOpenFromJoystick(joy); -#if SDL_VERSION_ATLEAST(2, 0, 14) - char const *const serial = SDL_JoystickGetSerial(joy); if (serial) devinfo->sdl_state.serial = serial; - else -#endif // SDL_VERSION_ATLEAST(2, 0, 14) - devinfo->sdl_state.serial = std::nullopt; - osd_printf_verbose("Joystick: %s [GUID %s] Vendor ID %04X, Product ID %04X, Revision %04X\n", + osd_printf_verbose("Joystick: %s [GUID %s] Vendor ID %04X, Product ID %04X, Revision %04X, Serial %s\n", name ? name : "", guid_str, SDL_JoystickGetVendor(joy), SDL_JoystickGetProduct(joy), - SDL_JoystickGetProductVersion(joy)); + SDL_JoystickGetProductVersion(joy), + serial ? serial : ""); osd_printf_verbose("Joystick: ... %d axes, %d buttons %d hats %d balls\n", SDL_JoystickNumAxes(joy), SDL_JoystickNumButtons(joy), -- cgit v1.2.3