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

Comparing libev/ev.c (file contents):
Revision 1.88 by root, Sat Nov 10 04:40:27 2007 UTC vs.
Revision 1.91 by root, Sun Nov 11 00:06:48 2007 UTC

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
1341void 1347void

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines