summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/input/input_sdl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/modules/input/input_sdl.cpp')
-rw-r--r--src/osd/modules/input/input_sdl.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/osd/modules/input/input_sdl.cpp b/src/osd/modules/input/input_sdl.cpp
index 0da4701b2c9..35dc665f8e2 100644
--- a/src/osd/modules/input/input_sdl.cpp
+++ b/src/osd/modules/input/input_sdl.cpp
@@ -730,10 +730,12 @@ class sdl_joystick_module : public sdl_input_module
{
private:
device_map_t m_joy_map;
+ bool m_initialized_joystick;
+ bool m_initialized_haptic;
bool m_sixaxis_mode;
public:
sdl_joystick_module()
- : sdl_input_module(OSD_JOYSTICKINPUT_PROVIDER), m_sixaxis_mode(false)
+ : sdl_input_module(OSD_JOYSTICKINPUT_PROVIDER), m_initialized_joystick(false), m_initialized_haptic(false), m_sixaxis_mode(false)
{
}
@@ -741,20 +743,30 @@ public:
{
sdl_input_module::exit();
- SDL_QuitSubSystem(SDL_INIT_JOYSTICK|SDL_INIT_HAPTIC);
+ if (m_initialized_joystick)
+ {
+ SDL_QuitSubSystem(SDL_INIT_JOYSTICK);
+ }
+
+ if (m_initialized_haptic)
+ {
+ SDL_QuitSubSystem(SDL_INIT_HAPTIC);
+ }
}
virtual void input_init(running_machine &machine) override
{
SDL_SetHint(SDL_HINT_ACCELEROMETER_AS_JOYSTICK, "0");
- if (SDL_InitSubSystem(SDL_INIT_JOYSTICK))
+ m_initialized_joystick = !SDL_InitSubSystem(SDL_INIT_JOYSTICK);
+ if (!m_initialized_joystick)
{
osd_printf_error("Could not initialize SDL Joystick: %s.\n", SDL_GetError());
return;
}
- if (SDL_InitSubSystem(SDL_INIT_HAPTIC))
+ m_initialized_haptic = !SDL_InitSubSystem(SDL_INIT_HAPTIC);
+ if (!m_initialized_haptic)
{
osd_printf_verbose("Could not initialize SDL Haptic subsystem: %s.\n", SDL_GetError());
}