X-Git-Url: https://git.ctpug.org.za/?p=erdslangetjie.git;a=blobdiff_plain;f=erdslangetjie%2Fdata.py;fp=erdslangetjie%2Fdata.py;h=2ee869120d5880f9c5bbf1c7bbf3b9d5435cc1c6;hp=ad42ff3f58e8b25920583922c3a3431427cd5c3c;hb=e98761f7b9310668704a657126bddf051bafd2f0;hpb=7251307c58cb4a08c5ffdf15ab635b50ee9aba94 diff --git a/erdslangetjie/data.py b/erdslangetjie/data.py index ad42ff3..2ee8691 100644 --- a/erdslangetjie/data.py +++ b/erdslangetjie/data.py @@ -11,11 +11,13 @@ pyglet.resource search path. import os from kivy.core.image import ImageLoader from kivy.core.audio import SoundLoader +from kivy.cache import Cache data_py = os.path.abspath(os.path.dirname(__file__)) data_dir = os.path.normpath(os.path.join(data_py, '..', 'data')) -loader = ImageLoader() +imageloader = ImageLoader() soundloader = SoundLoader() +Cache.register('bane', limit=200) def filepath(filename): @@ -33,11 +35,21 @@ def load(filename, mode='rb'): return open(filepath(filename), mode) +def _cache_load(filename, loader): + '''Load an object either from disk or from the cache. + + We rely on kivy's caching infrastructure''' + path = filepath(filename) + obj = Cache.get('bane', path) + if obj is None: + obj = loader.load(path) + Cache.append('bane', path, obj) + return obj + + def load_image(filename): - '''Load an image into a kivy texture. We rely on kivy's caching - infrastructure''' - return loader.load(filepath(filename)) + return _cache_load(filename, imageloader) def load_sound(filename): - return soundloader.load(filepath(filename)) + return _cache_load(filename, soundloader)