summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp
diff options
context:
space:
mode:
authorRyan Houdek <Sonicadvance1@gmail.com>2015-01-19 16:05:21 -0600
committerRyan Houdek <Sonicadvance1@gmail.com>2015-01-19 16:07:28 -0600
commit817abdd579b2918d55141ac8efc9f8c4ef720634 (patch)
tree45289676fc5afdfdc0eb46e1576a1bc5fe9ffe39 /Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp
parent7376956c922a33266cc59afb3ff05f8825ac32ba (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.cpp36
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;
}
}
}