mirror of https://github.com/encounter/SDL.git
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:
parent
ba4ef461ea
commit
f499168c2c
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue