|
|
|
@ -867,13 +867,10 @@ void uasync_poll(struct UASYNC* ua, int timeout_tb) { |
|
|
|
req_timeout.tv_usec = (timeout_tb % 10000) * 100; |
|
|
|
req_timeout.tv_usec = (timeout_tb % 10000) * 100; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Use minimum of requested and next timer if both finite
|
|
|
|
|
|
|
|
struct timeval poll_timeout; |
|
|
|
struct timeval poll_timeout; |
|
|
|
if (timeout_tb < 0) { |
|
|
|
if (timeout_tb < 0) { |
|
|
|
// Infinite requested - use next timer if any
|
|
|
|
|
|
|
|
poll_timeout = next_timeout; |
|
|
|
poll_timeout = next_timeout; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
// Finite requested - min of requested and next
|
|
|
|
|
|
|
|
if (next_timeout.tv_sec < req_timeout.tv_sec || |
|
|
|
if (next_timeout.tv_sec < req_timeout.tv_sec || |
|
|
|
(next_timeout.tv_sec == req_timeout.tv_sec && next_timeout.tv_usec < req_timeout.tv_usec)) { |
|
|
|
(next_timeout.tv_sec == req_timeout.tv_sec && next_timeout.tv_usec < req_timeout.tv_usec)) { |
|
|
|
poll_timeout = next_timeout; |
|
|
|
poll_timeout = next_timeout; |
|
|
|
@ -881,6 +878,8 @@ void uasync_poll(struct UASYNC* ua, int timeout_tb) { |
|
|
|
poll_timeout = req_timeout; |
|
|
|
poll_timeout = req_timeout; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (poll_timeout.tv_sec == 0 && poll_timeout.tv_usec == 0 && timeout_tb > 0) poll_timeout = req_timeout; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int timeout_ms; |
|
|
|
int timeout_ms; |
|
|
|
if (timeout_tb < 0 && (next_timeout.tv_sec > 0 || next_timeout.tv_usec > 0)) { |
|
|
|
if (timeout_tb < 0 && (next_timeout.tv_sec > 0 || next_timeout.tv_usec > 0)) { |
|
|
|
|