summaryrefslogtreecommitdiff
path: root/ev.c
diff options
context:
space:
mode:
authorroot <root>2007-11-11 00:05:59 +0000
committerroot <root>2007-11-11 00:05:59 +0000
commitcf2e067e143e40c3b874a16069773fe04d3737bc (patch)
treed1acc57bca63c3875f5f0701828d86a17a346015 /ev.c
parentd1d02ca0040b567cfc3081701b52b0361412a444 (diff)
make timers best-effort non-drifting
Diffstat (limited to 'ev.c')
-rw-r--r--ev.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/ev.c b/ev.c
index 28ed91b..a605a57 100644
--- a/ev.c
+++ b/ev.c
@@ -989,7 +989,11 @@ timers_reify (EV_P)
if (w->repeat)
{
assert (("negative ev_timer repeat value found while processing timers", w->repeat > 0.));
- ((WT)w)->at = mn_now + w->repeat;
+
+ ((WT)w)->at += w->repeat;
+ if (((WT)w)->at < mn_now)
+ ((WT)w)->at = mn_now;
+
downheap ((WT *)timers, timercnt, 0);
}
else