return val;
}
+bool CJoystick::Reinitialize()
+{
+ // Restart SDL joystick subsystem
+ SDL_QuitSubSystem(SDL_INIT_JOYSTICK);
+ if (SDL_WasInit(SDL_INIT_JOYSTICK) != 0)
+ {
+ CLog::Log(LOGERROR, "Stop joystick subsystem failed");
+ return false;
+ }
+ if(SDL_InitSubSystem(SDL_INIT_JOYSTICK) != 0)
+ {
+ CLog::Log(LOGERROR, "Restart joystick subsystem failed : %s",SDL_GetError());
+ return false;
+ }
+
+ Initialize();
+
+ return true;
+}
+
#endif
if(m_Joysticks.size() < 2 || m_bMultipleJoysticksSupport)
{
// Restart SDL joystick subsystem
- SDL_QuitSubSystem(SDL_INIT_JOYSTICK);
- if (SDL_WasInit(SDL_INIT_JOYSTICK) != 0)
- {
- CLog::Log(LOGERROR, "HAL: Stop joystick subsystem failed");
- break;
- }
- if(SDL_InitSubSystem(SDL_INIT_JOYSTICK) != 0)
- {
- CLog::Log(LOGERROR, "HAL: Restart joystick subsystem failed : %s",SDL_GetError());
+ if (!g_Joystick.Reinitialize())
break;
- }
- g_Joystick.Initialize();
if (m_Notifications)
CGUIDialogKaiToast::QueueNotification(CGUIDialogKaiToast::Info, g_localizeStrings.Get(13024), dev.FriendlyName.c_str(), TOAST_DISPLAY_TIME, false);
}
if(m_Joysticks.size() < 3 || m_bMultipleJoysticksSupport)
{
// Restart SDL joystick subsystem
- SDL_QuitSubSystem(SDL_INIT_JOYSTICK);
- if (SDL_WasInit(SDL_INIT_JOYSTICK) != 0)
- {
- CLog::Log(LOGERROR, "HAL: Stop joystick subsystem failed");
+ if (!g_Joystick.Reinitialize())
return false;
- }
- if(SDL_InitSubSystem(SDL_INIT_JOYSTICK) != 0)
- {
- CLog::Log(LOGERROR, "HAL: Restart joystick subsystem failed : %s",SDL_GetError());
- return false;
- }
- g_Joystick.Initialize();
- CGUIDialogKaiToast::QueueNotification(CGUIDialogKaiToast::Warning, g_localizeStrings.Get(13025), m_Joysticks[i].FriendlyName.c_str(), TOAST_DISPLAY_TIME, false);
+ if (m_Notifications)
+ CGUIDialogKaiToast::QueueNotification(CGUIDialogKaiToast::Warning, g_localizeStrings.Get(13025), m_Joysticks[i].FriendlyName.c_str(), TOAST_DISPLAY_TIME, false);
}
m_Joysticks.erase(m_Joysticks.begin() + i);
return true;
#include "Application.h"
#include "input/XBMC_vkeys.h"
#include "input/MouseStat.h"
+#if defined(HAS_SDL_JOYSTICK)
+#include "input/SDLJoystick.h"
+#endif
#include "storage/MediaManager.h"
#include "windowing/WindowingFactory.h"
#include <dbt.h>
case DBT_DEVICEARRIVAL:
case DBT_DEVICEREMOVECOMPLETE:
if (((_DEV_BROADCAST_HEADER*) lParam)->dbcd_devicetype == DBT_DEVTYP_DEVICEINTERFACE)
+ {
g_peripherals.TriggerDeviceScan(PERIPHERAL_BUS_USB);
+#if defined(HAS_SDL_JOYSTICK)
+ g_Joystick.Reinitialize();
+#endif
+ }
}
break;
}