X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/b8783e5b26a7dd0601bece623c4cbfe19f57977b..1557c715e461d5a7deb04bb008c6497441351bbe:/lib/python/Components/Sources/EventInfo.py 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,))