--- deliantra/server/lib/cf.pm 2007/01/13 23:32:43 1.167 +++ deliantra/server/lib/cf.pm 2007/01/14 00:37:14 1.168 @@ -46,6 +46,8 @@ our $TICK = MAX_TIME * 1e-6; our $TICK_WATCHER; +our $AIO_POLL_WATCHER; +our $WRITE_RUNTIME_WATCHER; our $NEXT_TICK; our $NOW; @@ -259,7 +261,11 @@ sub freeze_mainloop { return unless $TICK_WATCHER->is_active; - my $guard = Coro::guard { $TICK_WATCHER->start }; + my $guard = Coro::guard { + $TICK_WATCHER->start; + $WRITE_RUNTIME_WATCHER->start; + }; + $WRITE_RUNTIME_WATCHER->stop; $TICK_WATCHER->stop; $guard } @@ -340,8 +346,6 @@ } sub write_runtime { - return unless $TICK_WATCHER->is_active; - my $runtime = cf::localdir . "/runtime"; my $fh = aio_open "$runtime~", O_WRONLY | O_CREAT, 0644 @@ -2404,7 +2408,7 @@ IO::AIO::max_poll_time $TICK * 0.2; -Event->io ( +$AIO_POLL_WATCHER = Event->io ( fd => IO::AIO::poll_fileno, poll => 'r', prio => 5, @@ -2412,7 +2416,7 @@ cb => \&IO::AIO::poll_cb, ); -Event->timer ( +$WRITE_RUNTIME_WATCHER = Event->timer ( data => WF_AUTOCANCEL, after => 0, interval => 10,