diff --git a/quadtree.py b/quadtree.py index f7dcbb0..3c21528 100644 --- a/quadtree.py +++ b/quadtree.py @@ -651,16 +651,10 @@ def render_worldtile(quadtree, chunks, colstart, colend, rowstart, rowend, path) # check chunk mtimes to see if they are newer try: - #tile_mtime = os.path.getmtime(imgpath) - regionMtimes = {} needs_rerender = False for col, row, chunkx, chunky, regionfile in chunks: # check region file mtime first. - # Note: we cache the value since it's actually very likely we will have multipule chunks in the same region, and syscalls are expensive - regionMtime = regionMtimes.get(regionfile,None) - if regionMtime is None: - regionMtime = os.path.getmtime(regionfile) - regionMtimes[regionfile] = regionMtime + regionMtime = world.get_region_mtime(regionfile) if regionMtime <= tile_mtime: continue diff --git a/world.py b/world.py index 7ed790c..f8e880b 100644 --- a/world.py +++ b/world.py @@ -78,7 +78,7 @@ class World(object): for x, y, regionfile in self._iterate_regionfiles(): mcr = nbt.MCRFileReader(regionfile) mcr.get_chunk_info() - regions[regionfile] = mcr + regions[regionfile] = (mcr,os.path.getmtime(regionfile)) regionfiles[(x,y)] = (x,y,regionfile) self.regionfiles = regionfiles self.regions = regions @@ -117,8 +117,6 @@ class World(object): _, _, regionfile = self.regionfiles.get((chunkX//32, chunkY//32),(None,None,None)); return regionfile - - def load_from_region(self,filename, x, y): nbt = self.load_region(filename).load_chunk(x, y) if nbt is None: @@ -127,11 +125,15 @@ class World(object): return nbt.read_all() - #filo region cache - def load_region(self,filename): - #return nbt.MCRFileReader(filename) - return self.regions[filename] + #used to reload a changed region + def reload_region(self,filename): + self.regions[filename] = (nbt.MCRFileReader(filename),os.path.getmtime(regionfile)) + def load_region(self,filename): + return self.regions[filename][0] + + def get_region_mtime(self,filename): + return self.regions[filename][1] def convert_coords(self, chunkx, chunky): """Takes a coordinate (chunkx, chunky) where chunkx and chunky are