@@ -286,40 +286,42 @@ GamepadLayout GameController::getLayout(const SDL_Event &event)
286286 }
287287#else
288288#if SDL_VERSION_ATLEAST(2, 0, 12)
289- const int index = event.cdevice .which ;
290- const SDL_GameControllerType gamepadType = SDL_GameControllerTypeForIndex (index);
291- switch (gamepadType) {
292- case SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO:
289+ GameController *controller = Get (event);
290+ if (controller != nullptr ) {
291+ const SDL_GameControllerType gamepadType = SDL_GameControllerGetType (controller->sdl_game_controller_ );
292+ switch (gamepadType) {
293+ case SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO:
293294#if SDL_VERSION_ATLEAST(2, 24, 0)
294- case SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT:
295- case SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT:
296- case SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR:
295+ case SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT:
296+ case SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT:
297+ case SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR:
297298#endif
298- return GamepadLayout::Nintendo;
299- case SDL_CONTROLLER_TYPE_PS3:
300- case SDL_CONTROLLER_TYPE_PS4:
299+ return GamepadLayout::Nintendo;
300+ case SDL_CONTROLLER_TYPE_PS3:
301+ case SDL_CONTROLLER_TYPE_PS4:
301302#if SDL_VERSION_ATLEAST(2, 0, 14)
302- case SDL_CONTROLLER_TYPE_PS5:
303+ case SDL_CONTROLLER_TYPE_PS5:
303304#endif
304- return GamepadLayout::PlayStation;
305- case SDL_CONTROLLER_TYPE_XBOXONE:
306- case SDL_CONTROLLER_TYPE_XBOX360:
305+ return GamepadLayout::PlayStation;
306+ case SDL_CONTROLLER_TYPE_XBOXONE:
307+ case SDL_CONTROLLER_TYPE_XBOX360:
307308#if SDL_VERSION_ATLEAST(2, 0, 16)
308- case SDL_CONTROLLER_TYPE_GOOGLE_STADIA:
309- case SDL_CONTROLLER_TYPE_AMAZON_LUNA:
309+ case SDL_CONTROLLER_TYPE_GOOGLE_STADIA:
310+ case SDL_CONTROLLER_TYPE_AMAZON_LUNA:
310311#if SDL_VERSION_ATLEAST(2, 24, 0)
311- case SDL_CONTROLLER_TYPE_NVIDIA_SHIELD:
312+ case SDL_CONTROLLER_TYPE_NVIDIA_SHIELD:
312313#endif
313314#endif
314- return GamepadLayout::Xbox;
315+ return GamepadLayout::Xbox;
315316#if SDL_VERSION_ATLEAST(2, 0, 14)
316- case SDL_CONTROLLER_TYPE_VIRTUAL:
317+ case SDL_CONTROLLER_TYPE_VIRTUAL:
317318#endif
318- case SDL_CONTROLLER_TYPE_UNKNOWN:
319+ case SDL_CONTROLLER_TYPE_UNKNOWN:
319320#if SDL_VERSION_ATLEAST(2, 30, 0)
320- case SDL_CONTROLLER_TYPE_MAX:
321+ case SDL_CONTROLLER_TYPE_MAX:
321322#endif
322- break ;
323+ break ;
324+ }
323325 }
324326#endif
325327 return GamepadLayout::Generic;
0 commit comments