Fixed getting different results for SDL_PollEvent(NULL) and SDL_PollEvent(&event)

This commit is contained in:
Sam Lantinga 2022-01-08 08:49:34 -08:00
parent 93cab32db3
commit dca281e810
1 changed files with 16 additions and 3 deletions

View File

@ -1004,9 +1004,22 @@ SDL_WaitEventTimeout(SDL_Event * event, int timeout)
}
break;
default:
if (event && event->type == SDL_POLLSENTINEL) {
/* Reached the end of a poll cycle, and not willing to wait */
return 0;
if (include_sentinel) {
if (event) {
if (event->type == SDL_POLLSENTINEL) {
/* Reached the end of a poll cycle, and not willing to wait */
return 0;
}
} else {
/* Need to peek the next event to check for sentinel */
SDL_Event dummy;
if (SDL_PeepEventsInternal(&dummy, 1, SDL_PEEKEVENT, SDL_FIRSTEVENT, SDL_LASTEVENT, SDL_TRUE) &&
dummy.type == SDL_POLLSENTINEL) {
/* Reached the end of a poll cycle, and not willing to wait */
return 0;
}
}
}
/* Has existing events */
return 1;