Browse Source

*** empty log message ***

master
Marc Alexander Lehmann 12 years ago
parent
commit
6a4c76b92d
  1. 2
      Changes
  2. 24
      ev.c

2
Changes

@ -3,7 +3,9 @@ Revision history for libev, a high-performance and full-featured event loop.
TODO: ev_walk
TODO: child wactehr execution order w.r.t. childsigcb reg. priorities
TODO: remain
TODO: io_collect documentation
- Denis F. Latypoff corrected many typos in example code snippets.
- the ev_set_io_collect_interval interpretation has changed.
- honor autoconf detection of EV_USE_CLOCK_SYSCALL, also double-
check that the syscall number is available before trying to
use it (reported by ry@tinyclouds).

24
ev.c

@ -629,7 +629,7 @@ ev_sleep (ev_tstamp delay)
tv.tv_usec = (long)((delay - (ev_tstamp)(tv.tv_sec)) * 1e6);
/* here we rely on sys/time.h + sys/types.h + unistd.h providing select */
/* somehting nto guaranteed by newer posix versions, but guaranteed */
/* somehting not guaranteed by newer posix versions, but guaranteed */
/* by older ones */
select (0, 0, 0, 0, &tv);
#endif
@ -2077,6 +2077,9 @@ ev_loop (EV_P_ int flags)
if (expect_true (!(flags & EVLOOP_NONBLOCK || idleall || !activecnt)))
{
/* remember old timestamp for io_blocktime calculation */
ev_tstamp prev_mn_now = mn_now;
/* update time to cancel out callback processing overhead */
time_update (EV_A_ 1e100);
@ -2096,18 +2099,23 @@ ev_loop (EV_P_ int flags)
}
#endif
/* don't let timeouts decrease the waittime below timeout_blocktime */
if (expect_false (waittime < timeout_blocktime))
waittime = timeout_blocktime;
sleeptime = waittime - backend_fudge;
/* extra check because io_blocktime is commonly 0 */
if (expect_false (io_blocktime))
{
sleeptime = io_blocktime - (mn_now - prev_mn_now);
if (expect_true (sleeptime > io_blocktime))
sleeptime = io_blocktime;
if (sleeptime > waittime - backend_fudge)
sleeptime = waittime - backend_fudge;
if (sleeptime)
{
ev_sleep (sleeptime);
waittime -= sleeptime;
if (expect_true (sleeptime > 0.))
{
ev_sleep (sleeptime);
waittime -= sleeptime;
}
}
}

Loading…
Cancel
Save