mirror of
https://github.com/yawut/SDL.git
synced 2026-10-01 04:36:42 -05:00
Only check SDL_SYS_JoystickNeedsPolling() if we know we don't need to poll for other reasons. This avoids a select() syscall on Linux if it isn't necessary.
This commit is contained in:
@@ -70,9 +70,9 @@ static __inline__ SDL_bool
|
||||
SDL_ShouldPollJoystick()
|
||||
{
|
||||
#if !SDL_JOYSTICK_DISABLED
|
||||
if (SDL_PrivateJoystickNeedsPolling() &&
|
||||
(!SDL_disabled_events[SDL_JOYAXISMOTION >> 8] ||
|
||||
SDL_JoystickEventState(SDL_QUERY))) {
|
||||
if ((!SDL_disabled_events[SDL_JOYAXISMOTION >> 8] ||
|
||||
SDL_JoystickEventState(SDL_QUERY)) &&
|
||||
SDL_PrivateJoystickNeedsPolling()) {
|
||||
return SDL_TRUE;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -637,7 +637,7 @@ int
|
||||
SDL_JoystickEventState(int state)
|
||||
{
|
||||
#if SDL_EVENTS_DISABLED
|
||||
return SDL_IGNORE;
|
||||
return SDL_DISABLE;
|
||||
#else
|
||||
const Uint32 event_list[] = {
|
||||
SDL_JOYAXISMOTION, SDL_JOYBALLMOTION, SDL_JOYHATMOTION,
|
||||
@@ -647,7 +647,7 @@ SDL_JoystickEventState(int state)
|
||||
|
||||
switch (state) {
|
||||
case SDL_QUERY:
|
||||
state = SDL_IGNORE;
|
||||
state = SDL_DISABLE;
|
||||
for (i = 0; i < SDL_arraysize(event_list); ++i) {
|
||||
state = SDL_EventState(event_list[i], SDL_QUERY);
|
||||
if (state == SDL_ENABLE) {
|
||||
@@ -669,15 +669,10 @@ SDL_JoystickEventState(int state)
|
||||
SDL_bool
|
||||
SDL_PrivateJoystickNeedsPolling()
|
||||
{
|
||||
if ( SDL_SYS_JoystickNeedsPolling() )
|
||||
{
|
||||
// sys layer needs us to think
|
||||
if (SDL_joysticks != NULL) {
|
||||
return SDL_TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
// otherwise only do it if a joystick is opened
|
||||
return SDL_joysticks != NULL;
|
||||
} else {
|
||||
return SDL_SYS_JoystickNeedsPolling();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user