ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/maps/perl/map-prefetch.ext
(Generate patch)

Comparing deliantra/maps/perl/map-prefetch.ext (file contents):
Revision 1.6 by root, Tue Jul 11 15:37:31 2006 UTC vs.
Revision 1.10 by root, Thu Aug 3 11:23:58 2006 UTC

89 89
90 if ($type eq "map") { 90 if ($type eq "map") {
91 if (my $map = cf::map::has_been_loaded $path) { 91 if (my $map = cf::map::has_been_loaded $path) {
92 $cb->(), next if $map->in_memory == cf::MAP_IN_MEMORY; 92 $cb->(), next if $map->in_memory == cf::MAP_IN_MEMORY;
93 93
94 prefetch file => $map->tmppath 94 prefetch file => $map->tmpname
95 if $map->in_memory == cf::MAP_SWAPPED; 95 if $map->in_memory == cf::MAP_SWAPPED;
96 } 96 }
97 } 97 }
98 98
99 load_file $path, $cb; 99 load_file $path, $cb;
103 $PREFETCHING = 0; 103 $PREFETCHING = 0;
104} 104}
105 105
106my %MAP_EXITS; 106my %MAP_EXITS;
107 107
108sub prefetch_map { 108sub prefetch_map($) {
109 my ($map) = @_; 109 my ($map) = @_;
110 110
111 my $exit = $MAP_EXITS{$map->path} ||= find_exits $map; 111 my $exit = $MAP_EXITS{$map->path} ||= find_exits $map;
112 prefetch map => $_ for @$exit; 112 prefetch map => $_ for @$exit;
113} 113}
116 my ($ob) = @_; 116 my ($ob) = @_;
117 117
118 prefetch_map $ob->map; 118 prefetch_map $ob->map;
119} 119}
120 120
121if (0) { #test#
121# prefetch a few players/second 122# prefetch a few players/second
122{ 123{
123 my @players; 124 my @players;
124 125
125 Event->timer (interval => 0.2, cb => sub { 126 Event->timer (interval => 0.2, cb => sub {
126 @players = map $_->ob->name, cf::player::list unless @players; 127 @players = map $_->ob->name, cf::player::list unless @players;
127 my $player = cf::player::find pop @players 128 my $player = cf::player::find pop @players
128 or return; 129 or return;
129 130
131 if (my $map = $player->ob->map) {
130 prefetch_map $player->ob->map; 132 prefetch_map $map;
133 }
134
131 prefetch map => +($player->get_savebed)[0]; 135 prefetch map => +($player->get_savebed)[0];
132 }); 136 });
133} 137}
134 138
135# prefetch all .pl files every few minutes (thats only a "few" megabytes) 139# prefetch all .pl files every few minutes (thats only a "few" megabytes)
146 }; 150 };
147 151
148 $prefetch->(); $prefetch->(); 152 $prefetch->(); $prefetch->();
149 }; 153 };
150}); 154});
155}
151 156
152 157
153 158

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines