Browse Source

Fix memory leak in game_controller.cpp

pull/8312/merge
Anders Jenbo 24 hours ago committed by Stephen C. Wills
parent
commit
badb6c5972
  1. 46
      Source/controls/devices/game_controller.cpp

46
Source/controls/devices/game_controller.cpp

@ -286,40 +286,42 @@ GamepadLayout GameController::getLayout(const SDL_Event &event)
}
#else
#if SDL_VERSION_ATLEAST(2, 0, 12)
const int index = event.cdevice.which;
const SDL_GameControllerType gamepadType = SDL_GameControllerTypeForIndex(index);
switch (gamepadType) {
case SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO:
GameController *controller = Get(event);
if (controller != nullptr) {
const SDL_GameControllerType gamepadType = SDL_GameControllerGetType(controller->sdl_game_controller_);
switch (gamepadType) {
case SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO:
#if SDL_VERSION_ATLEAST(2, 24, 0)
case SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT:
case SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT:
case SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR:
case SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT:
case SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT:
case SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR:
#endif
return GamepadLayout::Nintendo;
case SDL_CONTROLLER_TYPE_PS3:
case SDL_CONTROLLER_TYPE_PS4:
return GamepadLayout::Nintendo;
case SDL_CONTROLLER_TYPE_PS3:
case SDL_CONTROLLER_TYPE_PS4:
#if SDL_VERSION_ATLEAST(2, 0, 14)
case SDL_CONTROLLER_TYPE_PS5:
case SDL_CONTROLLER_TYPE_PS5:
#endif
return GamepadLayout::PlayStation;
case SDL_CONTROLLER_TYPE_XBOXONE:
case SDL_CONTROLLER_TYPE_XBOX360:
return GamepadLayout::PlayStation;
case SDL_CONTROLLER_TYPE_XBOXONE:
case SDL_CONTROLLER_TYPE_XBOX360:
#if SDL_VERSION_ATLEAST(2, 0, 16)
case SDL_CONTROLLER_TYPE_GOOGLE_STADIA:
case SDL_CONTROLLER_TYPE_AMAZON_LUNA:
case SDL_CONTROLLER_TYPE_GOOGLE_STADIA:
case SDL_CONTROLLER_TYPE_AMAZON_LUNA:
#if SDL_VERSION_ATLEAST(2, 24, 0)
case SDL_CONTROLLER_TYPE_NVIDIA_SHIELD:
case SDL_CONTROLLER_TYPE_NVIDIA_SHIELD:
#endif
#endif
return GamepadLayout::Xbox;
return GamepadLayout::Xbox;
#if SDL_VERSION_ATLEAST(2, 0, 14)
case SDL_CONTROLLER_TYPE_VIRTUAL:
case SDL_CONTROLLER_TYPE_VIRTUAL:
#endif
case SDL_CONTROLLER_TYPE_UNKNOWN:
case SDL_CONTROLLER_TYPE_UNKNOWN:
#if SDL_VERSION_ATLEAST(2, 30, 0)
case SDL_CONTROLLER_TYPE_MAX:
case SDL_CONTROLLER_TYPE_MAX:
#endif
break;
break;
}
}
#endif
return GamepadLayout::Generic;

Loading…
Cancel
Save