X-Git-Url: http://git.archive.openwrt.org/?p=project%2Flibubox.git;a=blobdiff_plain;f=uloop.c;h=f5032418ed6697bf5035cbe3cdedf1c3ff85880b;hp=26fef32bd67b1818617e3b88ecaf34292badf0e5;hb=368fd2645878edadc72c60948d1f19c6769751d6;hpb=fa9937cc4f8e60ddfc2dd9b5820eac49bef3de6e;ds=sidebyside diff --git a/uloop.c b/uloop.c index 26fef32..f503241 100644 --- a/uloop.c +++ b/uloop.c @@ -520,8 +520,9 @@ bool uloop_cancelling(void) return uloop_run_depth > 0 && uloop_cancelled; } -int uloop_run(void) +int uloop_run_timeout(int timeout) { + int next_time = 0; struct timeval tv; /* @@ -545,7 +546,11 @@ int uloop_run(void) break; uloop_gettime(&tv); - uloop_run_events(uloop_get_next_timeout(&tv)); + + next_time = uloop_get_next_timeout(&tv); + if (timeout > 0 && next_time < timeout) + timeout = next_time; + uloop_run_events(timeout); } if (!--uloop_run_depth)