no bluescreen when playing "None"
[enigma2.git] / Navigation.py
index 751aca897d3c7a4638eb0a03748d914a513557c1..f1683df8cdb4ceffabb0a8948e420b6839140291 100644 (file)
@@ -19,22 +19,25 @@ class Navigation:
                self.pnav = pNavigation()
                self.pnav.m_event.get().append(self.callEvent)
                self.event = [ ]
-               self.currentlyPlayingService = None
                self.currentlyPlayingServiceReference = None
-               
+               self.currentlyPlayingService = None
+               self.state = 0
                self.RecordTimer = RecordTimer.RecordTimer()
 
        def callEvent(self, i):
+               self.state = i != 1
                for x in self.event:
                        x(i)
-       
+
        def playService(self, ref):
+               print "playing", ref and ref.toString()
                self.currentlyPlayingServiceReference = None
+               self.currentlyPlayingService = None
                if ref is None:
                        self.stopService()
                        return 0
                
-               if not self.pnav.playService(ref):
+               if self.pnav and not self.pnav.playService(ref):
                        self.currentlyPlayingServiceReference = ref
                        return 0
                return 1
@@ -46,37 +49,31 @@ class Navigation:
                print "recording service: %s" % (str(ref))
                if isinstance(ref, ServiceReference.ServiceReference):
                        ref = ref.ref
-               service = self.pnav.recordService(ref)
+               service = self.pnav and self.pnav.recordService(ref)
                
                if service is None:
                        print "record returned non-zero"
                        return None
                else:
                        return service
-       
-       def enqueueService(self, ref):
-               return self.pnav.enqueueService(ref)
-       
+
        def getCurrentService(self):
-               service = self.pnav.getCurrentService()
-               
-               if service is None:
-                       return None
-               
-               return service
-       
+               if self.state:
+                       if not self.currentlyPlayingService:
+                               self.currentlyPlayingService = self.pnav and self.pnav.getCurrentService()
+                       return self.currentlyPlayingService
+               return None
+
        def stopService(self):
-               self.pnav.stopService()
-       
-       def getPlaylist(self):
-               playlist = ePlaylistPtr()
-               if self.pnav.getPlaylist(playlist):
-                       return None
-               return playlist
-       
+               print "stopService"
+               if self.pnav:
+                       self.pnav.stopService()
+               self.currentlyPlayingService = None
+               self.currentlyPlayingServiceReference = None
+
        def pause(self, p):
-               return self.pnav.pause(p)
-       
+               return self.pnav and self.pnav.pause(p)
+
        def recordWithTimer(self, ref, begin, end, name, description, eit):
                if isinstance(ref, eServiceReference):
                        ref = ServiceReference.ServiceReference(ref)
@@ -86,6 +83,8 @@ class Navigation:
        
        def shutdown(self):
                self.RecordTimer.shutdown()
+               self.ServiceHandler = None
+               self.pnav = None
 
        def stopUserServices(self):
                self.stopService()