windows: align uv_run code with unix

This commit is contained in:
Saúl Ibarra Corretgé 2013-01-16 09:24:28 +01:00 committed by Ben Noordhuis
parent ce1a266c05
commit 79880121ce

View File

@ -249,10 +249,13 @@ static void uv_poll_ex(uv_loop_t* loop, int block) {
}
}
#define UV_LOOP_ALIVE(loop) \
((loop)->active_handles > 0 || \
!ngx_queue_empty(&(loop)->active_reqs) || \
(loop)->endgame_handles != NULL)
static int uv__loop_alive(uv_loop_t* loop) {
return loop->active_handles > 0 ||
!ngx_queue_empty(&loop->active_reqs) ||
loop->endgame_handles != NULL;
}
int uv_run(uv_loop_t *loop, uv_run_mode mode) {
int r;
@ -263,8 +266,10 @@ int uv_run(uv_loop_t *loop, uv_run_mode mode) {
else
poll = &uv_poll;
r = UV_LOOP_ALIVE(loop);
while (r) {
if (!uv__loop_alive(loop))
return 0;
do {
uv_update_time(loop);
uv_process_timers(loop);
@ -282,14 +287,13 @@ int uv_run(uv_loop_t *loop, uv_run_mode mode) {
(*poll)(loop, loop->idle_handles == NULL &&
loop->pending_reqs_tail == NULL &&
loop->endgame_handles == NULL &&
UV_LOOP_ALIVE(loop) &&
(loop->active_handles > 0 ||
!ngx_queue_empty(&loop->active_reqs)) &&
!(mode & UV_RUN_NOWAIT));
uv_check_invoke(loop);
r = UV_LOOP_ALIVE(loop);
r = uv__loop_alive(loop);
} while (r && !(mode & (UV_RUN_ONCE | UV_RUN_NOWAIT)));
if (mode & (UV_RUN_ONCE | UV_RUN_NOWAIT))
break;
}
return r;
}