From bcbd5801c2be23b2ee1a22e7b088fc2fb654f1c9 Mon Sep 17 00:00:00 2001 From: Andreas Monzner Date: Fri, 27 Jun 2008 14:43:24 +0000 Subject: some cleanups, add missing destroy calls, fix incomplete destroy calls, small speedup --- lib/python/Components/Sources/FrontendInfo.py | 30 ++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) (limited to 'lib/python/Components/Sources/FrontendInfo.py') diff --git a/lib/python/Components/Sources/FrontendInfo.py b/lib/python/Components/Sources/FrontendInfo.py index 142573c9..bcca7c3d 100644 --- a/lib/python/Components/Sources/FrontendInfo.py +++ b/lib/python/Components/Sources/FrontendInfo.py @@ -1,12 +1,27 @@ +from enigma import iPlayableService from Source import Source +from Components.PerServiceDisplay import PerServiceBase -class FrontendInfo(Source): - def __init__(self, service_source = None, frontend_source = None): +class FrontendInfo(Source, PerServiceBase): + def __init__(self, service_source = None, frontend_source = None, navcore = None): + self.navcore = None Source.__init__(self) + if navcore: + PerServiceBase.__init__(self, navcore, + { + iPlayableService.evTunedIn: self.updateFrontendData, + iPlayableService.evEnd: self.serviceEnd + }) self.service_source = service_source self.frontend_source = frontend_source self.updateFrontendData() + def serviceEnd(self): +# import pdb +# pdb.set_trace() + self.slot_number = self.frontend_type = None + self.changed((self.CHANGED_CLEAR, )) + def updateFrontendData(self): data = self.getFrontendData() if not data: @@ -24,8 +39,17 @@ class FrontendInfo(Source): frontend.getFrontendData(dict) return dict elif self.service_source: - service = self.service_source() + service = self.navcore and self.service_source() + feinfo = service and service.frontendInfo() + return feinfo and feinfo.getFrontendData() + elif self.navcore: + service = self.navcore.getCurrentService() feinfo = service and service.frontendInfo() return feinfo and feinfo.getFrontendData() else: return None + + def destroy(self): + if not self.frontend_source and not self.service_source: + PerServiceBase.destroy(self) + Source.destroy(self) -- cgit v1.2.3