x11: Use SDL_IOReady() instead of calling select() directly

SDL_IOReady() properly handles EINTR and can use poll() if available.
This commit is contained in:
Cameron Gutman 2021-10-24 15:54:57 -05:00
parent ba4ef461ea
commit f499168c2c
1 changed files with 1 additions and 8 deletions

View File

@ -1586,14 +1586,7 @@ X11_WaitEventTimeout(_THIS, int timeout)
return 0; return 0;
} }
} else if (timeout > 0) { } else if (timeout > 0) {
int display_fd = ConnectionNumber(display); if (SDL_IOReady(ConnectionNumber(display), SDL_FALSE, timeout) > 0) {
fd_set readset;
struct timeval tv_timeout;
FD_ZERO(&readset);
FD_SET(display_fd, &readset);
tv_timeout.tv_sec = (timeout / 1000);
tv_timeout.tv_usec = (timeout % 1000) * 1000;
if (select(display_fd + 1, &readset, NULL, NULL, &tv_timeout) > 0) {
X11_XNextEvent(display, &xevent); X11_XNextEvent(display, &xevent);
} else { } else {
return 0; return 0;