diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2006-08-09 00:26:15 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2006-08-09 00:26:15 +0000 |
| commit | 9d3112aad388b4369a339b851aa2507a02bb2d4f (patch) | |
| tree | 744d27b53a25921978f8df8b1b1c2c836caa442c /lib/python/Components/Element.py | |
| parent | ab2ae6bd08a0ef13fc7462d51fc3a9ab15509b17 (diff) | |
| download | enigma2-9d3112aad388b4369a339b851aa2507a02bb2d4f.tar.gz enigma2-9d3112aad388b4369a339b851aa2507a02bb2d4f.zip | |
fix caching
Diffstat (limited to 'lib/python/Components/Element.py')
| -rw-r--r-- | lib/python/Components/Element.py | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/lib/python/Components/Element.py b/lib/python/Components/Element.py index 019155c6..baab4cfb 100644 --- a/lib/python/Components/Element.py +++ b/lib/python/Components/Element.py @@ -4,6 +4,17 @@ from Tools.CList import CList # Render Converter Converter Source # a bidirectional connection + +def cached(f): + name = f.__name__ + def wrapper(self): + if self.cache is None: + return f(self) + if name not in self.cache: + self.cache[name] = (True, f(self)) + return self.cache[name][1] + return wrapper + class Element(object): CHANGED_DEFAULT = 0 # initial "pull" state CHANGED_ALL = 1 # really everything changed @@ -16,7 +27,7 @@ class Element(object): self.master = None self.source = None self.__suspended = True - self.clearCache() + self.cache = None def connectDownstream(self, downstream): self.downstream_elements.append(downstream) @@ -52,17 +63,14 @@ class Element(object): # default action: push downstream def changed(self, *args, **kwargs): - self.clearCache() + self.cache = { } self.downstream_elements.changed(*args, **kwargs) - self.clearCache() + self.cache = None def reconnectUpstream(self, new_upstream): assert self.source is not None self.source = new_upstream - def clearCache(self): - self.cache = None - def setSuspend(self, suspended): changed = self.__suspended != suspended if not self.__suspended and suspended: |
