xfree86: Fix interpretation of xf86WaitForInput timeout

Commit aa6717ce2 switched xf86WaitForInput from using select(2) to using
poll(2). Before this change, the timeout was interpreted as being in
microseconds; afterwards it is fed directly to xorg_poll which interprets
it as being in milliseconds. This results in the function potentially
blocking 1000x longer than intended. This commit scales down the timeout
argument before passing it to xorg_poll, being careful to ensure the result
is not rounded down due to integer division.

Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Jason Gerecke 2017-05-26 14:27:19 -07:00 committed by Peter Hutterer
parent 96af794dc6
commit 2fbf62b2fb

View File

@ -394,6 +394,9 @@ xf86WaitForInput(int fd, int timeout)
poll_fd.fd = fd;
poll_fd.events = POLLIN;
/* convert microseconds to milliseconds */
timeout = (timeout + 999) / 1000;
if (fd >= 0) {
SYSCALL(r = xserver_poll(&poll_fd, 1, timeout));
}