… | |
… | |
2478 | my $bug_warning = 0; |
2478 | my $bug_warning = 0; |
2479 | |
2479 | |
2480 | $TICK_WATCHER = Event->timer ( |
2480 | $TICK_WATCHER = Event->timer ( |
2481 | reentrant => 0, |
2481 | reentrant => 0, |
2482 | parked => 1, |
2482 | parked => 1, |
2483 | prio => 0, |
2483 | prio => -1, |
2484 | at => $NEXT_TICK || $TICK, |
2484 | at => $NEXT_TICK || $TICK, |
2485 | data => WF_AUTOCANCEL, |
2485 | data => WF_AUTOCANCEL, |
2486 | cb => sub { |
2486 | cb => sub { |
2487 | if ($Coro::current != $Coro::main) { |
2487 | if ($Coro::current != $Coro::main) { |
2488 | Carp::cluck "major BUG: server tick called outside of main coro, skipping it" |
2488 | Carp::cluck "major BUG: server tick called outside of main coro, skipping it" |
… | |
… | |
2496 | $RUNTIME += $TICK; |
2496 | $RUNTIME += $TICK; |
2497 | $NEXT_TICK += $TICK; |
2497 | $NEXT_TICK += $TICK; |
2498 | |
2498 | |
2499 | $WAIT_FOR_TICK->broadcast; |
2499 | $WAIT_FOR_TICK->broadcast; |
2500 | $WAIT_FOR_TICK_ONE->send if $WAIT_FOR_TICK_ONE->awaited; |
2500 | $WAIT_FOR_TICK_ONE->send if $WAIT_FOR_TICK_ONE->awaited; |
|
|
2501 | |
|
|
2502 | my $AFTER = Event::time; |
|
|
2503 | warn $AFTER - $NOW;#d# |
2501 | |
2504 | |
2502 | # if we are delayed by four ticks or more, skip them all |
2505 | # if we are delayed by four ticks or more, skip them all |
2503 | $NEXT_TICK = Event::time if Event::time >= $NEXT_TICK + $TICK * 4; |
2506 | $NEXT_TICK = Event::time if Event::time >= $NEXT_TICK + $TICK * 4; |
2504 | |
2507 | |
2505 | $TICK_WATCHER->at ($NEXT_TICK); |
2508 | $TICK_WATCHER->at ($NEXT_TICK); |