Skip to content

Commit badb6c5

Browse files
AJenboStephenCWills
authored andcommitted
Fix memory leak in game_controller.cpp
1 parent a4d3684 commit badb6c5

File tree

1 file changed

+24
-22
lines changed

1 file changed

+24
-22
lines changed

Source/controls/devices/game_controller.cpp

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)