Support turbo2.
[vuplus_dvbapp] / lib / python / Screens / PictureInPicture.py
index bd340d8..1a25fad 100644 (file)
@@ -5,6 +5,8 @@ from Components.config import config, ConfigPosition
 
 pip_config_initialized = False
 
 
 pip_config_initialized = False
 
+on_pip_start_stop = []
+
 class PictureInPicture(Screen):
        def __init__(self, session):
                global pip_config_initialized
 class PictureInPicture(Screen):
        def __init__(self, session):
                global pip_config_initialized
@@ -15,6 +17,11 @@ class PictureInPicture(Screen):
                        config.av.pip = ConfigPosition(default=[-1, -1, -1, -1], args = (719, 567, 720, 568))
                        pip_config_initialized = True
                self.onLayoutFinish.append(self.LayoutFinished)
                        config.av.pip = ConfigPosition(default=[-1, -1, -1, -1], args = (719, 567, 720, 568))
                        pip_config_initialized = True
                self.onLayoutFinish.append(self.LayoutFinished)
+               self.dvbPipStarted = False
+
+       def __del__(self):
+               if self.dvbPipStarted:
+                       self.onPipStartAndStop()
 
        def LayoutFinished(self):
                self.onLayoutFinish.remove(self.LayoutFinished)
 
        def LayoutFinished(self):
                self.onLayoutFinish.remove(self.LayoutFinished)
@@ -31,20 +38,20 @@ class PictureInPicture(Screen):
                config.av.pip.value[1] = y
                config.av.pip.save()
                self.instance.move(ePoint(x, y))
                config.av.pip.value[1] = y
                config.av.pip.save()
                self.instance.move(ePoint(x, y))
-               
+
        def resize(self, w, h):
                config.av.pip.value[2] = w
                config.av.pip.value[3] = h
                config.av.pip.save()
                self.instance.resize(eSize(*(w, h)))
                self["video"].instance.resize(eSize(*(w, h)))
        def resize(self, w, h):
                config.av.pip.value[2] = w
                config.av.pip.value[3] = h
                config.av.pip.save()
                self.instance.resize(eSize(*(w, h)))
                self["video"].instance.resize(eSize(*(w, h)))
-               
+
        def getPosition(self):
                return ((self.instance.position().x(), self.instance.position().y()))
        def getPosition(self):
                return ((self.instance.position().x(), self.instance.position().y()))
-               
+
        def getSize(self):
                return (self.instance.size().width(), self.instance.size().height())
        def getSize(self):
                return (self.instance.size().width(), self.instance.size().height())
-               
+
        def playService(self, service):
                if service and (service.flags & eServiceReference.isGroup):
                        ref = getBestPlayableServiceReference(service, eServiceReference())
        def playService(self, service):
                if service and (service.flags & eServiceReference.isGroup):
                        ref = getBestPlayableServiceReference(service, eServiceReference())
@@ -53,13 +60,21 @@ class PictureInPicture(Screen):
                if ref:
                        self.pipservice = eServiceCenter.getInstance().play(ref)
                        if self.pipservice and not self.pipservice.setTarget(1):
                if ref:
                        self.pipservice = eServiceCenter.getInstance().play(ref)
                        if self.pipservice and not self.pipservice.setTarget(1):
+                               if ref.type == 1: # dvb service
+                                       self.dvbPipStarted = True
+                                       self.onPipStartAndStop()
+
                                self.pipservice.start()
                                self.currentService = service
                                return True
                        else:
                                self.pipservice = None
                return False
                                self.pipservice.start()
                                self.currentService = service
                                return True
                        else:
                                self.pipservice = None
                return False
-               
+
        def getCurrentService(self):
                return self.currentService
        def getCurrentService(self):
                return self.currentService
-       
+
+       def onPipStartAndStop(self):
+               global on_pip_start_stop
+               for x in on_pip_start_stop:
+                       x()
\ No newline at end of file