--- deliantra/server/lib/cf.pm 2012/11/20 14:54:17 1.611 +++ deliantra/server/lib/cf.pm 2012/11/21 12:47:09 1.612 @@ -599,6 +599,8 @@ while () { next_job: + Coro::cede; + my $avail = cf::till_tick; for (0 .. $#SLOT_QUEUE) { @@ -606,7 +608,6 @@ $busy = 0; my $job = splice @SLOT_QUEUE, $_, 1, (); $job->[2]->send; - Coro::cede; goto next_job; } else { $SLOT_QUEUE[$_][0] *= $SLOT_DECAY; @@ -614,8 +615,7 @@ } if (@SLOT_QUEUE) { - # we do not use wait_for_tick() as it returns immediately when tick is inactive - $WAIT_FOR_TICK->wait; + wait_for_tick; } else { $busy = 0; Coro::schedule;