From: Felix Domke Date: Sat, 15 Mar 2008 10:50:29 +0000 (+0000) Subject: optional pixmap caching X-Git-Tag: 2.6.0~1462 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/72089a1844b6b6e820601d00c028b774dc0cbf75 optional pixmap caching --- diff --git a/lib/python/Tools/LoadPixmap.py b/lib/python/Tools/LoadPixmap.py index b7838a39..53e04e54 100644 --- a/lib/python/Tools/LoadPixmap.py +++ b/lib/python/Tools/LoadPixmap.py @@ -1,6 +1,11 @@ from enigma import loadPNG, loadJPG -def LoadPixmap(path, desktop = None): +pixmap_cache = {} + +def LoadPixmap(path, desktop = None, cached = False): + if path in pixmap_cache: + return pixmap_cache[path] + if path[-4:] == ".png": ptr = loadPNG(path) elif path[-4:] == ".jpg": @@ -12,4 +17,8 @@ def LoadPixmap(path, desktop = None): raise "neither .png nor .jpg, please fix file extension" if ptr and desktop: desktop.makeCompatiblePixmap(ptr) + + if cached: + pixmap_cache[path] = ptr + return ptr diff --git a/skin.py b/skin.py index 21ec62ae..26c08207 100644 --- a/skin.py +++ b/skin.py @@ -106,7 +106,13 @@ def collectAttributes(skinAttributes, node, skin_path_prefix=None, ignore=[]): skinAttributes.append((attrib, value)) def loadPixmap(path, desktop): - ptr = LoadPixmap(path, desktop) + cached = False + option = path.find("#") + if option != -1: + options = path[option+1:].split(',') + path = path[:option] + cached = "cached" in options + ptr = LoadPixmap(path, desktop, cached) if ptr is None: raise SkinError("pixmap file %s not found!" % (path)) return ptr