X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/1557c715e461d5a7deb04bb008c6497441351bbe..1c6adfdbe104773d7a98377de6951da02ae1aac0:/lib/python/Components/Sources/EventInfo.py diff --git a/lib/python/Components/Sources/EventInfo.py b/lib/python/Components/Sources/EventInfo.py index 20e5f104..5af0bf97 100644 --- a/lib/python/Components/Sources/EventInfo.py +++ b/lib/python/Components/Sources/EventInfo.py @@ -1,10 +1,8 @@ from Components.PerServiceDisplay import PerServiceBase -from Tools.Event import Event -from enigma import iPlayableService +from Components.Element import cached +from enigma import iPlayableService, iServiceInformation, eServiceReference, eEPGCache from Source import Source -from time import time - class EventInfo(PerServiceBase, Source, object): NOW = 0 NEXT = 1 @@ -17,21 +15,28 @@ class EventInfo(PerServiceBase, Source, object): iPlayableService.evUpdatedEventInfo: self.gotEvent, iPlayableService.evEnd: self.gotEvent }, with_event=True) - self.now_or_next = now_or_next - + self.epgQuery = eEPGCache.getInstance().lookupEventTime + + @cached def getEvent(self): - 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] + service = self.navcore.getCurrentService() + info = service and service.info() + ret = info and info.getEvent(self.now_or_next) + if not ret and info: + refstr = info.getInfoString(iServiceInformation.sServiceref) + ret = self.epgQuery(eServiceReference(refstr), -1, self.now_or_next and 1 or 0) + return ret event = property(getEvent) def gotEvent(self, what): - if what in [iPlayableService.evStart, iPlayableService.evEnd]: + if what == iPlayableService.evEnd: self.changed((self.CHANGED_CLEAR,)) else: self.changed((self.CHANGED_ALL,)) + + def destroy(self): + PerServiceBase.destroy(self) + Source.destroy(self) +