From 195e08d4a1f9c0888b300717ce2d28c817b04427 Mon Sep 17 00:00:00 2001 From: Andrew Brown Date: Sat, 25 Feb 2012 20:07:07 -0500 Subject: [PATCH] Determine an appropriate rendercheck mode automatically --- overviewer_core/settingsDefinition.py | 2 +- overviewer_core/tileset.py | 33 +++++++++++++++++++++++++-- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/overviewer_core/settingsDefinition.py b/overviewer_core/settingsDefinition.py index 91d8560..4c3dd02 100644 --- a/overviewer_core/settingsDefinition.py +++ b/overviewer_core/settingsDefinition.py @@ -71,7 +71,7 @@ renders = Setting(required=True, default={}, "optimizeimg": Setting(required=True, validator=validateOptImg, default=0), "nomarkers": Setting(required=False, validator=validateBool, default=None), "texturepath": Setting(required=False, validator=validateTexturePath, default=None), - "renderchecks": Setting(required=True, validator=validateInt, default=0), + "renderchecks": Setting(required=False, validator=validateInt, default=None), "rerenderprob": Setting(required=True, validator=validateFloat, default=0), # Remove this eventually (once people update their configs) diff --git a/overviewer_core/tileset.py b/overviewer_core/tileset.py index 3698454..7dcbc67 100644 --- a/overviewer_core/tileset.py +++ b/overviewer_core/tileset.py @@ -188,7 +188,9 @@ class TileSet(object): renderchecks An integer indicating how to determine which tiles need updating - and which don't. This is one of three levels: + and which don't. This key is optional; if not specified, an + appropriate mode is determined from the persistent config obtained + from the asset manager. This is one of three levels: 0 Only render tiles that have chunks with a greater mtime than @@ -257,9 +259,36 @@ class TileSet(object): self.am = assetmanagerobj self.textures = texturesobj - self.last_rendertime = self.am.get_tileset_config(self.options.get("name")).get('last_rendertime', 0) + config = self.am.get_tileset_config(self.options.get("name")) + + self.last_rendertime = config.get('last_rendertime', 0) self.this_rendertime = time.time() + if "renderchecks" not in self.options: + if not config: + # No persistent config? This is a full render then. + self.options['renderchecks'] = 2 + logging.debug("This is the first time rendering %s. Doing" + + " a full-render", + self.options['name']) + elif config.get("render_in_progress", False): + # The last render must have been interrupted. The default should be + # 1 then, not 0 + logging.warning( + "The last render for %s didn't finish. I'll be " + + "scanning all the tiles to make sure everything's up "+ + "to date.", + self.options['name'], + ) + self.options['renderchecks'] = 1 + else: + logging.debug("No rendercheck mode specified for %s. "+ + "Rendering tile whose chunks have changed since %s", + self.options['name'], + time.strftime("%x %X", time.localtime(self.last_rendertime)), + ) + self.options['renderchecks'] = 0 + # Throughout the class, self.outputdir is an absolute path to the # directory where we output tiles. It is assumed to exist. self.outputdir = os.path.abspath(outputdir)