ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/ev.c
(Generate patch)

Comparing libev/ev.c (file contents):
Revision 1.243 by root, Fri May 9 15:52:13 2008 UTC vs.
Revision 1.244 by root, Tue May 20 23:49:41 2008 UTC

1601#endif 1601#endif
1602 1602
1603void inline_size 1603void inline_size
1604timers_reify (EV_P) 1604timers_reify (EV_P)
1605{ 1605{
1606 while (timercnt && ANHE_at (timers [HEAP0]) <= mn_now) 1606 while (timercnt && ANHE_at (timers [HEAP0]) < mn_now)
1607 { 1607 {
1608 ev_timer *w = (ev_timer *)ANHE_w (timers [HEAP0]); 1608 ev_timer *w = (ev_timer *)ANHE_w (timers [HEAP0]);
1609 1609
1610 /*assert (("inactive timer on timer heap detected", ev_is_active (w)));*/ 1610 /*assert (("inactive timer on timer heap detected", ev_is_active (w)));*/
1611 1611
1630 1630
1631#if EV_PERIODIC_ENABLE 1631#if EV_PERIODIC_ENABLE
1632void inline_size 1632void inline_size
1633periodics_reify (EV_P) 1633periodics_reify (EV_P)
1634{ 1634{
1635 while (periodiccnt && ANHE_at (periodics [HEAP0]) <= ev_rt_now) 1635 while (periodiccnt && ANHE_at (periodics [HEAP0]) < ev_rt_now)
1636 { 1636 {
1637 ev_periodic *w = (ev_periodic *)ANHE_w (periodics [HEAP0]); 1637 ev_periodic *w = (ev_periodic *)ANHE_w (periodics [HEAP0]);
1638 1638
1639 /*assert (("inactive timer on periodic heap detected", ev_is_active (w)));*/ 1639 /*assert (("inactive timer on periodic heap detected", ev_is_active (w)));*/
1640 1640
1641 /* first reschedule or stop timer */ 1641 /* first reschedule or stop timer */
1642 if (w->reschedule_cb) 1642 if (w->reschedule_cb)
1643 { 1643 {
1644 ev_at (w) = w->reschedule_cb (w, ev_rt_now + TIME_EPSILON); 1644 ev_at (w) = w->reschedule_cb (w, ev_rt_now);
1645 1645
1646 assert (("ev_periodic reschedule callback returned time in the past", ev_at (w) > ev_rt_now)); 1646 assert (("ev_periodic reschedule callback returned time in the past", ev_at (w) >= ev_rt_now));
1647 1647
1648 ANHE_at_set (periodics [HEAP0]); 1648 ANHE_at_set (periodics [HEAP0]);
1649 downheap (periodics, periodiccnt, HEAP0); 1649 downheap (periodics, periodiccnt, HEAP0);
1650 } 1650 }
1651 else if (w->interval) 1651 else if (w->interval)
1652 { 1652 {
1653 ev_at (w) = w->offset + ceil ((ev_rt_now - w->offset) / w->interval) * w->interval; 1653 ev_at (w) = w->offset + ceil ((ev_rt_now - w->offset) / w->interval) * w->interval;
1654 if (ev_at (w) - ev_rt_now <= TIME_EPSILON) ev_at (w) += w->interval; 1654 if (ev_at (w) - ev_rt_now <= TIME_EPSILON) ev_at (w) += w->interval;
1655 1655
1656 assert (("ev_periodic timeout in the past detected while processing timers, negative interval?", ev_at (w) > ev_rt_now)); 1656 assert (("ev_periodic timeout in the past detected while processing timers, negative interval?", ev_at (w) >= ev_rt_now));
1657 1657
1658 ANHE_at_set (periodics [HEAP0]); 1658 ANHE_at_set (periodics [HEAP0]);
1659 downheap (periodics, periodiccnt, HEAP0); 1659 downheap (periodics, periodiccnt, HEAP0);
1660 } 1660 }
1661 else 1661 else

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines