From 0eb5c976b9d6339daf8220946c2d03fdce6d043e Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 17 Oct 2016 21:44:32 -0700 Subject: [PATCH] Fixed bug 3456 - SDL_GameControllerOpen fails if the joystick subsystem isn't initialized Philipp Wiesemann Maybe the fault is in the SDL_VIDEO_DRIVER_WINDOWS section in SDL_InitSubSystem() of "src/SDL.c". Because there only SDL_INIT_JOYSTICK is checked. The flags are adapted for SDL_INIT_GAMECONTROLLER afterwards. --- src/SDL.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/SDL.c b/src/SDL.c index 687c140d9d759..9eef00cd34651 100644 --- a/src/SDL.c +++ b/src/SDL.c @@ -115,6 +115,16 @@ SDL_InitSubSystem(Uint32 flags) /* Clear the error message */ SDL_ClearError(); + if ((flags & SDL_INIT_GAMECONTROLLER)) { + /* game controller implies joystick */ + flags |= SDL_INIT_JOYSTICK; + } + + if ((flags & (SDL_INIT_VIDEO|SDL_INIT_JOYSTICK))) { + /* video or joystick implies events */ + flags |= SDL_INIT_EVENTS; + } + #if SDL_VIDEO_DRIVER_WINDOWS if ((flags & (SDL_INIT_HAPTIC|SDL_INIT_JOYSTICK))) { if (SDL_HelperWindowCreate() < 0) { @@ -127,16 +137,6 @@ SDL_InitSubSystem(Uint32 flags) SDL_TicksInit(); #endif - if ((flags & SDL_INIT_GAMECONTROLLER)) { - /* game controller implies joystick */ - flags |= SDL_INIT_JOYSTICK; - } - - if ((flags & (SDL_INIT_VIDEO|SDL_INIT_JOYSTICK))) { - /* video or joystick implies events */ - flags |= SDL_INIT_EVENTS; - } - /* Initialize the event subsystem */ if ((flags & SDL_INIT_EVENTS)) { #if !SDL_EVENTS_DISABLED