mirror of https://github.com/encounter/SDL.git
Removed SDL_SYS_JoystickNeedsPolling().
It was simpler to just have the polling (actually: hotplug detection) functions return immediately if it's not an appropriate time to poll. Note that previously, if any joystick/controller was opened, we would poll every time anyhow, skipping this function.
This commit is contained in:
parent
9e5504f89d
commit
446d19c4de
|
@ -83,19 +83,6 @@ static struct
|
||||||
} SDL_EventQ = { NULL, SDL_TRUE };
|
} SDL_EventQ = { NULL, SDL_TRUE };
|
||||||
|
|
||||||
|
|
||||||
static SDL_INLINE SDL_bool
|
|
||||||
SDL_ShouldPollJoystick()
|
|
||||||
{
|
|
||||||
#if !SDL_JOYSTICK_DISABLED
|
|
||||||
if ((!SDL_disabled_events[SDL_JOYAXISMOTION >> 8] ||
|
|
||||||
SDL_JoystickEventState(SDL_QUERY)) &&
|
|
||||||
SDL_PrivateJoystickNeedsPolling()) {
|
|
||||||
return SDL_TRUE;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return SDL_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Public functions */
|
/* Public functions */
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -403,7 +390,7 @@ SDL_PumpEvents(void)
|
||||||
}
|
}
|
||||||
#if !SDL_JOYSTICK_DISABLED
|
#if !SDL_JOYSTICK_DISABLED
|
||||||
/* Check for joystick state change */
|
/* Check for joystick state change */
|
||||||
if (SDL_ShouldPollJoystick()) {
|
if ((!SDL_disabled_events[SDL_JOYAXISMOTION >> 8] || SDL_JoystickEventState(SDL_QUERY))) {
|
||||||
SDL_JoystickUpdate();
|
SDL_JoystickUpdate();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -736,18 +736,6 @@ SDL_JoystickEventState(int state)
|
||||||
#endif /* SDL_EVENTS_DISABLED */
|
#endif /* SDL_EVENTS_DISABLED */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* return 1 if you want to run the joystick update loop this frame, used by hotplug support */
|
|
||||||
SDL_bool
|
|
||||||
SDL_PrivateJoystickNeedsPolling()
|
|
||||||
{
|
|
||||||
if (SDL_joysticks != NULL) {
|
|
||||||
return SDL_TRUE;
|
|
||||||
} else {
|
|
||||||
return SDL_SYS_JoystickNeedsPolling();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* return the guid for this index */
|
/* return the guid for this index */
|
||||||
SDL_JoystickGUID SDL_JoystickGetDeviceGUID(int device_index)
|
SDL_JoystickGUID SDL_JoystickGetDeviceGUID(int device_index)
|
||||||
{
|
{
|
||||||
|
|
|
@ -42,9 +42,6 @@ extern int SDL_PrivateJoystickHat(SDL_Joystick * joystick,
|
||||||
extern int SDL_PrivateJoystickButton(SDL_Joystick * joystick,
|
extern int SDL_PrivateJoystickButton(SDL_Joystick * joystick,
|
||||||
Uint8 button, Uint8 state);
|
Uint8 button, Uint8 state);
|
||||||
|
|
||||||
/* Helper function to let lower sys layer tell the event system if the joystick code needs to think */
|
|
||||||
extern SDL_bool SDL_PrivateJoystickNeedsPolling();
|
|
||||||
|
|
||||||
/* Internal sanity checking functions */
|
/* Internal sanity checking functions */
|
||||||
extern int SDL_PrivateJoystickValid(SDL_Joystick * joystick);
|
extern int SDL_PrivateJoystickValid(SDL_Joystick * joystick);
|
||||||
|
|
||||||
|
|
|
@ -68,9 +68,6 @@ extern int SDL_SYS_NumJoysticks();
|
||||||
/* Function to cause any queued joystick insertions to be processed */
|
/* Function to cause any queued joystick insertions to be processed */
|
||||||
extern void SDL_SYS_JoystickDetect();
|
extern void SDL_SYS_JoystickDetect();
|
||||||
|
|
||||||
/* Function to determine if the joystick loop needs to run right now */
|
|
||||||
extern SDL_bool SDL_SYS_JoystickNeedsPolling();
|
|
||||||
|
|
||||||
/* Function to get the device-dependent name of a joystick */
|
/* Function to get the device-dependent name of a joystick */
|
||||||
extern const char *SDL_SYS_JoystickNameForDeviceIndex(int device_index);
|
extern const char *SDL_SYS_JoystickNameForDeviceIndex(int device_index);
|
||||||
|
|
||||||
|
|
|
@ -410,11 +410,6 @@ void SDL_SYS_JoystickDetect()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_bool SDL_SYS_JoystickNeedsPolling()
|
|
||||||
{
|
|
||||||
return SDL_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static SDL_joylist_item *
|
static SDL_joylist_item *
|
||||||
JoystickByDevIndex(int device_index)
|
JoystickByDevIndex(int device_index)
|
||||||
{
|
{
|
||||||
|
|
|
@ -213,11 +213,6 @@ void SDL_SYS_JoystickDetect()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_bool SDL_SYS_JoystickNeedsPolling()
|
|
||||||
{
|
|
||||||
return SDL_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
SDL_SYS_JoystickNameForDeviceIndex(int device_index)
|
SDL_SYS_JoystickNameForDeviceIndex(int device_index)
|
||||||
{
|
{
|
||||||
|
|
|
@ -601,15 +601,6 @@ SDL_SYS_JoystickDetect()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_bool
|
|
||||||
SDL_SYS_JoystickNeedsPolling()
|
|
||||||
{
|
|
||||||
while (CFRunLoopRunInMode(SDL_JOYSTICK_RUNLOOP_MODE,0,TRUE) == kCFRunLoopRunHandledSource) {
|
|
||||||
/* no-op. Pending callbacks will fire in CFRunLoopRunInMode(). */
|
|
||||||
}
|
|
||||||
return s_bDeviceAdded || s_bDeviceRemoved;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Function to get the device-dependent name of a joystick */
|
/* Function to get the device-dependent name of a joystick */
|
||||||
const char *
|
const char *
|
||||||
SDL_SYS_JoystickNameForDeviceIndex(int device_index)
|
SDL_SYS_JoystickNameForDeviceIndex(int device_index)
|
||||||
|
|
|
@ -46,11 +46,6 @@ void SDL_SYS_JoystickDetect()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_bool SDL_SYS_JoystickNeedsPolling()
|
|
||||||
{
|
|
||||||
return SDL_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Function to get the device-dependent name of a joystick */
|
/* Function to get the device-dependent name of a joystick */
|
||||||
const char *
|
const char *
|
||||||
SDL_SYS_JoystickNameForDeviceIndex(int device_index)
|
SDL_SYS_JoystickNameForDeviceIndex(int device_index)
|
||||||
|
|
|
@ -94,11 +94,6 @@ extern "C"
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_bool SDL_SYS_JoystickNeedsPolling()
|
|
||||||
{
|
|
||||||
return SDL_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Function to get the device-dependent name of a joystick */
|
/* Function to get the device-dependent name of a joystick */
|
||||||
const char *SDL_SYS_JoystickNameForDeviceIndex(int device_index)
|
const char *SDL_SYS_JoystickNameForDeviceIndex(int device_index)
|
||||||
{
|
{
|
||||||
|
|
|
@ -49,11 +49,6 @@ void SDL_SYS_JoystickDetect()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_bool SDL_SYS_JoystickNeedsPolling()
|
|
||||||
{
|
|
||||||
return SDL_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Function to get the device-dependent name of a joystick */
|
/* Function to get the device-dependent name of a joystick */
|
||||||
const char *
|
const char *
|
||||||
SDL_SYS_JoystickNameForDeviceIndex(int device_index)
|
SDL_SYS_JoystickNameForDeviceIndex(int device_index)
|
||||||
|
|
|
@ -392,15 +392,6 @@ void SDL_SYS_JoystickDetect()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_bool SDL_SYS_JoystickNeedsPolling()
|
|
||||||
{
|
|
||||||
#if SDL_USE_LIBUDEV
|
|
||||||
return SDL_TRUE;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return SDL_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static SDL_joylist_item *
|
static SDL_joylist_item *
|
||||||
JoystickByDevIndex(int device_index)
|
JoystickByDevIndex(int device_index)
|
||||||
{
|
{
|
||||||
|
|
|
@ -141,11 +141,6 @@ void SDL_SYS_JoystickDetect()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_bool SDL_SYS_JoystickNeedsPolling()
|
|
||||||
{
|
|
||||||
return SDL_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Function to get the device-dependent name of a joystick */
|
/* Function to get the device-dependent name of a joystick */
|
||||||
const char * SDL_SYS_JoystickNameForDeviceIndex(int device_index)
|
const char * SDL_SYS_JoystickNameForDeviceIndex(int device_index)
|
||||||
{
|
{
|
||||||
|
|
|
@ -797,80 +797,71 @@ EnumXInputDevices(JoyStick_DeviceData **pContext)
|
||||||
void SDL_SYS_JoystickDetect()
|
void SDL_SYS_JoystickDetect()
|
||||||
{
|
{
|
||||||
JoyStick_DeviceData *pCurList = NULL;
|
JoyStick_DeviceData *pCurList = NULL;
|
||||||
|
#if !SDL_EVENTS_DISABLED
|
||||||
|
SDL_Event event;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* only enum the devices if the joystick thread told us something changed */
|
/* only enum the devices if the joystick thread told us something changed */
|
||||||
if ( s_bDeviceAdded || s_bDeviceRemoved )
|
if (!s_bDeviceAdded && !s_bDeviceRemoved) {
|
||||||
{
|
return; /* thread hasn't signaled, nothing to do right now. */
|
||||||
SDL_LockMutex( s_mutexJoyStickEnum );
|
|
||||||
|
|
||||||
s_bDeviceAdded = SDL_FALSE;
|
|
||||||
s_bDeviceRemoved = SDL_FALSE;
|
|
||||||
|
|
||||||
pCurList = SYS_Joystick;
|
|
||||||
SYS_Joystick = NULL;
|
|
||||||
|
|
||||||
/* Look for DirectInput joysticks, wheels, head trackers, gamepads, etc.. */
|
|
||||||
IDirectInput8_EnumDevices(dinput,
|
|
||||||
DI8DEVCLASS_GAMECTRL,
|
|
||||||
EnumJoysticksCallback,
|
|
||||||
&pCurList, DIEDFL_ATTACHEDONLY);
|
|
||||||
|
|
||||||
SDL_free(SDL_RawDevList); /* in case we used this in DirectInput enumerator. */
|
|
||||||
SDL_RawDevList = NULL;
|
|
||||||
SDL_RawDevListCount = 0;
|
|
||||||
|
|
||||||
/* Look for XInput devices. Do this last, so they're first in the final list. */
|
|
||||||
EnumXInputDevices(&pCurList);
|
|
||||||
|
|
||||||
SDL_UnlockMutex( s_mutexJoyStickEnum );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( pCurList )
|
SDL_LockMutex(s_mutexJoyStickEnum);
|
||||||
{
|
|
||||||
while ( pCurList )
|
s_bDeviceAdded = SDL_FALSE;
|
||||||
{
|
s_bDeviceRemoved = SDL_FALSE;
|
||||||
JoyStick_DeviceData *pListNext = NULL;
|
|
||||||
|
pCurList = SYS_Joystick;
|
||||||
|
SYS_Joystick = NULL;
|
||||||
|
|
||||||
|
/* Look for DirectInput joysticks, wheels, head trackers, gamepads, etc.. */
|
||||||
|
IDirectInput8_EnumDevices(dinput, DI8DEVCLASS_GAMECTRL, EnumJoysticksCallback, &pCurList, DIEDFL_ATTACHEDONLY);
|
||||||
|
|
||||||
|
SDL_free(SDL_RawDevList); /* in case we used this in DirectInput enumerator. */
|
||||||
|
SDL_RawDevList = NULL;
|
||||||
|
SDL_RawDevListCount = 0;
|
||||||
|
|
||||||
|
/* Look for XInput devices. Do this last, so they're first in the final list. */
|
||||||
|
EnumXInputDevices(&pCurList);
|
||||||
|
|
||||||
|
SDL_UnlockMutex(s_mutexJoyStickEnum);
|
||||||
|
|
||||||
|
while (pCurList) {
|
||||||
|
JoyStick_DeviceData *pListNext = NULL;
|
||||||
|
|
||||||
#if SDL_HAPTIC_DINPUT
|
#if SDL_HAPTIC_DINPUT
|
||||||
if (pCurList->bXInputDevice) {
|
if (pCurList->bXInputDevice) {
|
||||||
XInputHaptic_MaybeRemoveDevice(pCurList->XInputUserId);
|
XInputHaptic_MaybeRemoveDevice(pCurList->XInputUserId);
|
||||||
} else {
|
} else {
|
||||||
DirectInputHaptic_MaybeRemoveDevice(&pCurList->dxdevice);
|
DirectInputHaptic_MaybeRemoveDevice(&pCurList->dxdevice);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !SDL_EVENTS_DISABLED
|
#if !SDL_EVENTS_DISABLED
|
||||||
{
|
SDL_zero(event);
|
||||||
SDL_Event event;
|
event.type = SDL_JOYDEVICEREMOVED;
|
||||||
event.type = SDL_JOYDEVICEREMOVED;
|
|
||||||
|
|
||||||
if (SDL_GetEventState(event.type) == SDL_ENABLE) {
|
if (SDL_GetEventState(event.type) == SDL_ENABLE) {
|
||||||
event.jdevice.which = pCurList->nInstanceID;
|
event.jdevice.which = pCurList->nInstanceID;
|
||||||
if ((SDL_EventOK == NULL)
|
if ((!SDL_EventOK) || (*SDL_EventOK) (SDL_EventOKParam, &event)) {
|
||||||
|| (*SDL_EventOK) (SDL_EventOKParam, &event)) {
|
SDL_PushEvent(&event);
|
||||||
SDL_PushEvent(&event);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
#endif /* !SDL_EVENTS_DISABLED */
|
#endif /* !SDL_EVENTS_DISABLED */
|
||||||
|
|
||||||
pListNext = pCurList->pNext;
|
pListNext = pCurList->pNext;
|
||||||
SDL_free(pCurList->joystickname);
|
SDL_free(pCurList->joystickname);
|
||||||
SDL_free(pCurList);
|
SDL_free(pCurList);
|
||||||
pCurList = pListNext;
|
pCurList = pListNext;
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( s_bDeviceAdded )
|
if (s_bDeviceAdded) {
|
||||||
{
|
|
||||||
JoyStick_DeviceData *pNewJoystick;
|
JoyStick_DeviceData *pNewJoystick;
|
||||||
int device_index = 0;
|
int device_index = 0;
|
||||||
s_bDeviceAdded = SDL_FALSE;
|
s_bDeviceAdded = SDL_FALSE;
|
||||||
pNewJoystick = SYS_Joystick;
|
pNewJoystick = SYS_Joystick;
|
||||||
while ( pNewJoystick )
|
while (pNewJoystick) {
|
||||||
{
|
if (pNewJoystick->send_add_event) {
|
||||||
if ( pNewJoystick->send_add_event )
|
|
||||||
{
|
|
||||||
#if SDL_HAPTIC_DINPUT
|
#if SDL_HAPTIC_DINPUT
|
||||||
if (pNewJoystick->bXInputDevice) {
|
if (pNewJoystick->bXInputDevice) {
|
||||||
XInputHaptic_MaybeAddDevice(pNewJoystick->XInputUserId);
|
XInputHaptic_MaybeAddDevice(pNewJoystick->XInputUserId);
|
||||||
|
@ -880,18 +871,15 @@ void SDL_SYS_JoystickDetect()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !SDL_EVENTS_DISABLED
|
#if !SDL_EVENTS_DISABLED
|
||||||
{
|
SDL_zero(event);
|
||||||
SDL_Event event;
|
|
||||||
event.type = SDL_JOYDEVICEADDED;
|
event.type = SDL_JOYDEVICEADDED;
|
||||||
|
|
||||||
if (SDL_GetEventState(event.type) == SDL_ENABLE) {
|
if (SDL_GetEventState(event.type) == SDL_ENABLE) {
|
||||||
event.jdevice.which = device_index;
|
event.jdevice.which = device_index;
|
||||||
if ((SDL_EventOK == NULL)
|
if ((!SDL_EventOK) || (*SDL_EventOK) (SDL_EventOKParam, &event)) {
|
||||||
|| (*SDL_EventOK) (SDL_EventOKParam, &event)) {
|
SDL_PushEvent(&event);
|
||||||
SDL_PushEvent(&event);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
#endif /* !SDL_EVENTS_DISABLED */
|
#endif /* !SDL_EVENTS_DISABLED */
|
||||||
pNewJoystick->send_add_event = 0;
|
pNewJoystick->send_add_event = 0;
|
||||||
}
|
}
|
||||||
|
@ -901,16 +889,6 @@ void SDL_SYS_JoystickDetect()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* we need to poll if we have pending hotplug device changes or connected devices */
|
|
||||||
SDL_bool SDL_SYS_JoystickNeedsPolling()
|
|
||||||
{
|
|
||||||
/* we have a new device or one was pulled, we need to think this frame please */
|
|
||||||
if ( s_bDeviceAdded || s_bDeviceRemoved )
|
|
||||||
return SDL_TRUE;
|
|
||||||
|
|
||||||
return SDL_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Function to get the device-dependent name of a joystick */
|
/* Function to get the device-dependent name of a joystick */
|
||||||
const char *
|
const char *
|
||||||
SDL_SYS_JoystickNameForDeviceIndex(int device_index)
|
SDL_SYS_JoystickNameForDeviceIndex(int device_index)
|
||||||
|
|
|
@ -193,11 +193,6 @@ void SDL_SYS_JoystickDetect()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_bool SDL_SYS_JoystickNeedsPolling()
|
|
||||||
{
|
|
||||||
return SDL_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Function to get the device-dependent name of a joystick */
|
/* Function to get the device-dependent name of a joystick */
|
||||||
const char *
|
const char *
|
||||||
SDL_SYS_JoystickNameForDeviceIndex(int device_index)
|
SDL_SYS_JoystickNameForDeviceIndex(int device_index)
|
||||||
|
|
|
@ -230,14 +230,6 @@ void SDL_SYS_JoystickDetect()
|
||||||
SDL_UnlockMutex(g_DeviceInfoLock);
|
SDL_UnlockMutex(g_DeviceInfoLock);
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_bool SDL_SYS_JoystickNeedsPolling()
|
|
||||||
{
|
|
||||||
/* Since XInput, or WinRT, provides any events to indicate when a game
|
|
||||||
controller gets connected, and instead indicates device availability
|
|
||||||
solely through polling, we'll poll (for new devices).
|
|
||||||
*/
|
|
||||||
return SDL_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Internal function to retreive device capabilities.
|
/* Internal function to retreive device capabilities.
|
||||||
This function will return an SDL-standard value of 0 on success
|
This function will return an SDL-standard value of 0 on success
|
||||||
|
|
Loading…
Reference in New Issue