summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/ControllerInterface/SDL
diff options
context:
space:
mode:
authorMichael Maltese <michaeljosephmaltese@gmail.com>2016-10-16 13:39:05 -0700
committerMichael Maltese <michaeljosephmaltese@gmail.com>2016-11-30 16:07:55 -0800
commit3e69d066f5e9ad0a1097d806c656035398bbb7bc (patch)
treedd7ab461e209f81876a2b2145a5595812512eb6c /Source/Core/InputCommon/ControllerInterface/SDL
parentcebb4d84f2a8021a5df2ff2a9d31eba16e1cb5e5 (diff)
ControllerInterface: replace Reinitialize with RefreshDevices
The SDL backend crashes when you close a joystick after SDL_Quit has been called. Some backends don't need to be shutdown and re-initialized everytime, we can just ask to enumerate devices again.
Diffstat (limited to 'Source/Core/InputCommon/ControllerInterface/SDL')
-rw-r--r--Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp6
-rw-r--r--Source/Core/InputCommon/ControllerInterface/SDL/SDL.h1
2 files changed, 7 insertions, 0 deletions
diff --git a/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp b/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp
index 8f8265e8d0..7da8e66fc6 100644
--- a/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp
+++ b/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp
@@ -47,6 +47,12 @@ void Init()
// Failed to initialize
return;
}
+}
+
+void PopulateDevices()
+{
+ if (!(SDL_WasInit(SDL_INIT_EVERYTHING) & SDL_INIT_JOYSTICK))
+ return;
// joysticks
for (int i = 0; i < SDL_NumJoysticks(); ++i)
diff --git a/Source/Core/InputCommon/ControllerInterface/SDL/SDL.h b/Source/Core/InputCommon/ControllerInterface/SDL/SDL.h
index e104af7715..c41bb57614 100644
--- a/Source/Core/InputCommon/ControllerInterface/SDL/SDL.h
+++ b/Source/Core/InputCommon/ControllerInterface/SDL/SDL.h
@@ -21,6 +21,7 @@ namespace ciface
namespace SDL
{
void Init();
+void PopulateDevices();
class Joystick : public Core::Device
{