diff options
author | Daniel Drake <dsd@gentoo.org> | 2008-06-15 15:23:29 -0500 |
---|---|---|
committer | Daniel Drake <dsd@gentoo.org> | 2008-06-15 15:23:29 -0500 |
commit | 217534e4b396081e038ee5f94c813d1668963673 (patch) | |
tree | 838a78bdeffec1d796a54feb3b56b44ccc7cb14e /libusb | |
parent | 5ad79b324bc5e11a75a585398a1e81c26f05e758 (diff) | |
download | libusb-217534e4b396081e038ee5f94c813d1668963673.tar.gz |
round up poll timeout
Pointed out by Richard Röjfors, otherwise we end up busy-looping with
a poll() timeout of 0.
Diffstat (limited to 'libusb')
-rw-r--r-- | libusb/io.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/libusb/io.c b/libusb/io.c index 4e85bdf..f659d24 100644 --- a/libusb/io.c +++ b/libusb/io.c @@ -1335,6 +1335,11 @@ static int handle_events(struct timeval *tv) pthread_mutex_unlock(&pollfds_lock); timeout_ms = (tv->tv_sec * 1000) + (tv->tv_usec / 1000); + + /* round up to next millisecond */ + if (tv->tv_usec % 1000) + timeout_ms++; + usbi_dbg("poll() %d fds with timeout in %dms", nfds, timeout_ms); r = poll(fds, nfds, timeout_ms); usbi_dbg("poll() returned %d", r); |