X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fpython%2FScreens%2FPictureInPicture.py;h=1a25fad65927ece8ce1da433fec737b3908ea40e;hp=bd340d8892f51a1c508fa58f44e465e012d0d2ad;hb=HEAD;hpb=2b557e7ef4b0518736c5162a501cd9bc743930b3;ds=sidebyside diff --git a/lib/python/Screens/PictureInPicture.py b/lib/python/Screens/PictureInPicture.py index bd340d8..1a25fad 100644 --- a/lib/python/Screens/PictureInPicture.py +++ b/lib/python/Screens/PictureInPicture.py @@ -5,6 +5,8 @@ from Components.config import config, ConfigPosition pip_config_initialized = False +on_pip_start_stop = [] + 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) + self.dvbPipStarted = False + + def __del__(self): + if self.dvbPipStarted: + self.onPipStartAndStop() 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)) - + 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 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()) @@ -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.type == 1: # dvb service + self.dvbPipStarted = True + self.onPipStartAndStop() + self.pipservice.start() self.currentService = service return True else: self.pipservice = None return False - + 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