diff options
| author | Ryan Houdek <Sonicadvance1@gmail.com> | 2015-01-19 16:05:21 -0600 |
|---|---|---|
| committer | Ryan Houdek <Sonicadvance1@gmail.com> | 2015-01-19 16:07:28 -0600 |
| commit | 817abdd579b2918d55141ac8efc9f8c4ef720634 (patch) | |
| tree | 45289676fc5afdfdc0eb46e1576a1bc5fe9ffe39 /Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp | |
| parent | 7376956c922a33266cc59afb3ff05f8825ac32ba (diff) | |
Remove an assumption in SDL.
We can compile with haptic support, and then not initialize due to haptics not being available.
So if we are compiling with haptics, test initializing with haptics and if that fails attempt to initialize without haptics before bailing out.
Diffstat (limited to 'Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp')
| -rw-r--r-- | Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp b/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp index a1fd428a0d..2525e273b8 100644 --- a/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp +++ b/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp @@ -38,21 +38,31 @@ void Init( std::vector<Core::Device*>& devices ) // multiple joysticks with the same name shall get unique ids starting at 0 std::map<std::string, int> name_counts; - if (SDL_Init( SDL_INIT_FLAGS ) >= 0) +#ifdef USE_SDL_HAPTIC + if (SDL_Init(SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC) >= 0) + { + // Correctly initialized + } + else +#endif + if (SDL_Init(SDL_INIT_JOYSTICK) < 0) + { + // Failed to initialize + return; + } + + // joysticks + for (int i = 0; i < SDL_NumJoysticks(); ++i) { - // joysticks - for (int i = 0; i < SDL_NumJoysticks(); ++i) + SDL_Joystick* dev = SDL_JoystickOpen(i); + if (dev) { - SDL_Joystick* dev = SDL_JoystickOpen(i); - if (dev) - { - Joystick* js = new Joystick(dev, i, name_counts[GetJoystickName(i)]++); - // only add if it has some inputs/outputs - if (js->Inputs().size() || js->Outputs().size()) - devices.push_back( js ); - else - delete js; - } + Joystick* js = new Joystick(dev, i, name_counts[GetJoystickName(i)]++); + // only add if it has some inputs/outputs + if (js->Inputs().size() || js->Outputs().size()) + devices.push_back( js ); + else + delete js; } } } |
