Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Commit

Permalink
Only check SDL_SYS_JoystickNeedsPolling() if we know we don't need to…
Browse files Browse the repository at this point in the history
… poll for other reasons. This avoids a select() syscall on Linux if it isn't necessary.
  • Loading branch information
slouken committed Dec 14, 2012
1 parent 0122917 commit 2aac14f
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 13 deletions.
6 changes: 3 additions & 3 deletions src/events/SDL_events.c
Expand Up @@ -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
Expand Down
15 changes: 5 additions & 10 deletions src/joystick/SDL_joystick.c
Expand Up @@ -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,
Expand All @@ -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) {
Expand All @@ -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();
}
}

Expand Down

0 comments on commit 2aac14f

Please sign in to comment.