Revert "unix,win: simplify calculating polling timeout"
This reverts commit a35308306f.
The original commit introduced unforeseen regressions. See
https://github.com/libuv/libuv/pull/1096.
Fixes: https://github.com/libuv/libuv/pull/1096
PR-URL: https://github.com/libuv/libuv/pull/1102
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
This commit is contained in:
parent
0d586b7dd8
commit
b2e13b9f00
@ -301,7 +301,7 @@ int uv_backend_timeout(const uv_loop_t* loop) {
|
||||
if (loop->stop_flag != 0)
|
||||
return 0;
|
||||
|
||||
if (!uv_loop_alive(loop))
|
||||
if (!uv__has_active_handles(loop) && !uv__has_active_reqs(loop))
|
||||
return 0;
|
||||
|
||||
if (!QUEUE_EMPTY(&loop->idle_handles))
|
||||
@ -310,6 +310,9 @@ int uv_backend_timeout(const uv_loop_t* loop) {
|
||||
if (!QUEUE_EMPTY(&loop->pending_queue))
|
||||
return 0;
|
||||
|
||||
if (loop->closing_handles)
|
||||
return 0;
|
||||
|
||||
return uv__next_timeout(loop);
|
||||
}
|
||||
|
||||
|
||||
@ -336,12 +336,15 @@ int uv_backend_timeout(const uv_loop_t* loop) {
|
||||
if (loop->stop_flag != 0)
|
||||
return 0;
|
||||
|
||||
if (!uv_loop_alive(loop))
|
||||
if (!uv__has_active_handles(loop) && !uv__has_active_reqs(loop))
|
||||
return 0;
|
||||
|
||||
if (loop->pending_reqs_tail)
|
||||
return 0;
|
||||
|
||||
if (loop->endgame_handles)
|
||||
return 0;
|
||||
|
||||
if (loop->idle_handles)
|
||||
return 0;
|
||||
|
||||
@ -460,8 +463,8 @@ static void uv_poll_ex(uv_loop_t* loop, DWORD timeout) {
|
||||
|
||||
|
||||
static int uv__loop_alive(const uv_loop_t* loop) {
|
||||
return uv__has_active_handles(loop) ||
|
||||
uv__has_active_reqs(loop) ||
|
||||
return loop->active_handles > 0 ||
|
||||
!QUEUE_EMPTY(&loop->active_reqs) ||
|
||||
loop->endgame_handles != NULL;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user