… | |
… | |
987 | |
987 | |
988 | /* first reschedule or stop timer */ |
988 | /* first reschedule or stop timer */ |
989 | if (w->repeat) |
989 | if (w->repeat) |
990 | { |
990 | { |
991 | assert (("negative ev_timer repeat value found while processing timers", w->repeat > 0.)); |
991 | assert (("negative ev_timer repeat value found while processing timers", w->repeat > 0.)); |
|
|
992 | |
992 | ((WT)w)->at = mn_now + w->repeat; |
993 | ((WT)w)->at += w->repeat; |
|
|
994 | if (((WT)w)->at < mn_now) |
|
|
995 | ((WT)w)->at = mn_now; |
|
|
996 | |
993 | downheap ((WT *)timers, timercnt, 0); |
997 | downheap ((WT *)timers, timercnt, 0); |
994 | } |
998 | } |
995 | else |
999 | else |
996 | ev_timer_stop (EV_A_ w); /* nonrepeating: stop timer */ |
1000 | ev_timer_stop (EV_A_ w); /* nonrepeating: stop timer */ |
997 | |
1001 | |
… | |
… | |
1292 | { |
1296 | { |
1293 | ev_clear_pending (EV_A_ (W)w); |
1297 | ev_clear_pending (EV_A_ (W)w); |
1294 | if (!ev_is_active (w)) |
1298 | if (!ev_is_active (w)) |
1295 | return; |
1299 | return; |
1296 | |
1300 | |
|
|
1301 | assert (("ev_io_start called with illegal fd (must stay constant after start!)", w->fd >= 0 && w->fd < anfdmax)); |
|
|
1302 | |
1297 | wlist_del ((WL *)&anfds[w->fd].head, (WL)w); |
1303 | wlist_del ((WL *)&anfds[w->fd].head, (WL)w); |
1298 | ev_stop (EV_A_ (W)w); |
1304 | ev_stop (EV_A_ (W)w); |
1299 | |
1305 | |
1300 | fd_change (EV_A_ w->fd); |
1306 | fd_change (EV_A_ w->fd); |
1301 | } |
1307 | } |
… | |
… | |
1331 | { |
1337 | { |
1332 | timers [((W)w)->active - 1] = timers [timercnt]; |
1338 | timers [((W)w)->active - 1] = timers [timercnt]; |
1333 | downheap ((WT *)timers, timercnt, ((W)w)->active - 1); |
1339 | downheap ((WT *)timers, timercnt, ((W)w)->active - 1); |
1334 | } |
1340 | } |
1335 | |
1341 | |
1336 | ((WT)w)->at = w->repeat; |
1342 | ((WT)w)->at -= mn_now; |
1337 | |
1343 | |
1338 | ev_stop (EV_A_ (W)w); |
1344 | ev_stop (EV_A_ (W)w); |
1339 | } |
1345 | } |
1340 | |
1346 | |
1341 | void |
1347 | void |