diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2006-07-30 22:56:43 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2006-07-30 22:56:43 +0000 |
| commit | 1557c715e461d5a7deb04bb008c6497441351bbe (patch) | |
| tree | 8a378b20ca3bebab0b2eca1742c10dfd746cb2a1 /lib/python/Components/Sources | |
| parent | b8783e5b26a7dd0601bece623c4cbfe19f57977b (diff) | |
| download | enigma2-1557c715e461d5a7deb04bb008c6497441351bbe.tar.gz enigma2-1557c715e461d5a7deb04bb008c6497441351bbe.zip | |
some minor speedups using caches and more selective updating
Diffstat (limited to 'lib/python/Components/Sources')
| -rw-r--r-- | lib/python/Components/Sources/Boolean.py | 5 | ||||
| -rw-r--r-- | lib/python/Components/Sources/Clock.py | 5 | ||||
| -rw-r--r-- | lib/python/Components/Sources/CurrentService.py | 8 | ||||
| -rw-r--r-- | lib/python/Components/Sources/EventInfo.py | 25 | ||||
| -rw-r--r-- | lib/python/Components/Sources/FrontendStatus.py | 2 | ||||
| -rw-r--r-- | lib/python/Components/Sources/MenuList.py | 2 |
6 files changed, 34 insertions, 13 deletions
diff --git a/lib/python/Components/Sources/Boolean.py b/lib/python/Components/Sources/Boolean.py index c25b4626..bd5222af 100644 --- a/lib/python/Components/Sources/Boolean.py +++ b/lib/python/Components/Sources/Boolean.py @@ -13,7 +13,7 @@ class Boolean(Source, object): Source.__init__(self) if poll > 0: self.poll_timer = eTimer() - self.poll_timer.timeout.get().append(self.changed) + self.poll_timer.timeout.get().append(self.poll) self.poll_timer.start(poll) def getBoolean(self): @@ -23,3 +23,6 @@ class Boolean(Source, object): return self.fixed boolean = property(getBoolean) + + def poll(self): + self.changed((self.CHANGED_ALL,)) diff --git a/lib/python/Components/Sources/Clock.py b/lib/python/Components/Sources/Clock.py index 608a7190..e2d7faa7 100644 --- a/lib/python/Components/Sources/Clock.py +++ b/lib/python/Components/Sources/Clock.py @@ -8,10 +8,13 @@ class Clock(Source): def __init__(self): Source.__init__(self) self.clock_timer = eTimer() - self.clock_timer.timeout.get().append(self.changed) + self.clock_timer.timeout.get().append(self.poll) self.clock_timer.start(1000) def getClock(self): return time.time() time = property(getClock) + + def poll(self): + self.changed((self.CHANGED_POLL,)) diff --git a/lib/python/Components/Sources/CurrentService.py b/lib/python/Components/Sources/CurrentService.py index 100822bc..08d67eee 100644 --- a/lib/python/Components/Sources/CurrentService.py +++ b/lib/python/Components/Sources/CurrentService.py @@ -2,6 +2,8 @@ from Components.PerServiceDisplay import PerServiceBase from enigma import iPlayableService from Source import Source +from time import time + class CurrentService(PerServiceBase, Source): def __init__(self, navcore): Source.__init__(self) @@ -18,9 +20,11 @@ class CurrentService(PerServiceBase, Source): self.navcore = navcore def serviceEvent(self, event): - self.changed(event) + self.changed((self.CHANGED_SPECIFIC, event)) def getCurrentService(self): - return self.navcore.getCurrentService() + if self.cache is None: + self.cache = self.navcore.getCurrentService() + return self.cache service = property(getCurrentService) diff --git a/lib/python/Components/Sources/EventInfo.py b/lib/python/Components/Sources/EventInfo.py index 40269993..20e5f104 100644 --- a/lib/python/Components/Sources/EventInfo.py +++ b/lib/python/Components/Sources/EventInfo.py @@ -3,6 +3,8 @@ from Tools.Event import Event from enigma import iPlayableService from Source import Source +from time import time + class EventInfo(PerServiceBase, Source, object): NOW = 0 NEXT = 1 @@ -11,16 +13,25 @@ class EventInfo(PerServiceBase, Source, object): Source.__init__(self) PerServiceBase.__init__(self, navcore, { - iPlayableService.evStart: self.changed, - iPlayableService.evUpdatedEventInfo: self.changed, - iPlayableService.evEnd: self.changed - }) + iPlayableService.evStart: self.gotEvent, + iPlayableService.evUpdatedEventInfo: self.gotEvent, + iPlayableService.evEnd: self.gotEvent + }, with_event=True) self.now_or_next = now_or_next def getEvent(self): - service = self.navcore.getCurrentService() - info = service and service.info() - return info and info.getEvent(self.now_or_next) + if self.cache is None: + service = self.navcore.getCurrentService() + info = service and service.info() + self.cache = (True, info and info.getEvent(self.now_or_next)) # we always store a tuple for negative caching + + return self.cache[1] event = property(getEvent) + + def gotEvent(self, what): + if what in [iPlayableService.evStart, iPlayableService.evEnd]: + self.changed((self.CHANGED_CLEAR,)) + else: + self.changed((self.CHANGED_ALL,)) diff --git a/lib/python/Components/Sources/FrontendStatus.py b/lib/python/Components/Sources/FrontendStatus.py index 6682e829..f1402f11 100644 --- a/lib/python/Components/Sources/FrontendStatus.py +++ b/lib/python/Components/Sources/FrontendStatus.py @@ -27,7 +27,7 @@ class FrontendStatus(Source): iFrontendInformation.bitErrorRate, iFrontendInformation.lockState] ] - self.changed() + self.changed((self.CHANGED_ALL, )) def getFrontendInfo(self): if self.frontend_source: diff --git a/lib/python/Components/Sources/MenuList.py b/lib/python/Components/Sources/MenuList.py index 98764418..dd5e18f7 100644 --- a/lib/python/Components/Sources/MenuList.py +++ b/lib/python/Components/Sources/MenuList.py @@ -9,7 +9,7 @@ class MenuList(Source, object): def setList(self, list): self.__list = list - self.changed() + self.changed((self.CHANGED_ALL,)) list = property(lambda self: self.__list, setList) |
