From 7b770c4d5780e873a4e36e09a30d1b552fde6ea0 Mon Sep 17 00:00:00 2001 From: hschang Date: Fri, 2 Dec 2016 19:52:25 +0900 Subject: [PATCH] Fix HDMI-IN extension menu. --- lib/python/Screens/InfoBarGenerics.py | 40 ++++++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index 2bf91fd..ea75301 100755 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -2333,9 +2333,10 @@ class InfoBarServiceErrorPopupSupport: class InfoBarHDMI: def __init__(self): self.hdmiInServiceRef = eServiceReference('8192:0:1:0:0:0:0:0:0:0:') + if SystemInfo.get("HdmiInSupport", False): self.addExtension((self.getShowHdmiInName, self.HDMIIn, lambda: True), None) - self.addExtension((self.getShowHdmiInPIPName, self.HDMIInPIP, self.pipShown), None) + self.addExtension((self.getShowHdmiInPIPName, self.HDMIInPIP, self.showHDMIPIPMenu), None) def getShowHdmiInName(self): curref = self.session.nav.getCurrentlyPlayingServiceReference() @@ -2347,13 +2348,23 @@ class InfoBarHDMI: return name def getShowHdmiInPIPName(self): - curref = self.session.pip.getCurrentService() + return _("Enable HDMI-IN on PIP") + + def showHDMIPIPMenu(self): + _pipAvailable = SystemInfo.get("NumVideoDecoders", 1) > 1 + + hdmiin_enabled = False + curref = self.session.nav.getCurrentlyPlayingServiceReference() if curref and curref.type == 8192: - name = _("Disable HDMI-IN on PIP") - else: - name = _("Enable HDMI-IN on PIP") + hdmiin_enabled = True - return name + hdmiin_pip_shown = False + if self.session.pipshown: + pipref=self.session.pip.getCurrentService() + if pipref and pipref.type == 8192: + hdmiin_pip_shown = True + + return _pipAvailable and not hdmiin_enabled and not hdmiin_pip_shown def getCurrentServiceRef(self): slist = self.servicelist @@ -2368,8 +2379,17 @@ class InfoBarHDMI: self.session.nav.playService(self.hdmiInServiceRef) def HDMIInPIP(self): - curref = self.session.pip.getCurrentService() - if curref and curref.type == 8192: - self.session.pip.playService(self.getCurrentServiceRef()) + if self.session.pipshown: + del self.session.pip + + self.session.pip = self.session.instantiateDialog(PictureInPicture) + self.session.pip.setAnimationMode(0) + self.session.pip.show() + newservice = self.hdmiInServiceRef + if self.session.pip.playService(newservice): + self.session.pipshown = True + self.session.pip.servicePath = self.servicelist.getCurrentServicePath() else: - self.session.pip.playService(self.hdmiInServiceRef) \ No newline at end of file + self.session.pipshown = False + del self.session.pip + self.session.openWithCallback(self.close, MessageBox, _("Could not open Picture in Picture"), MessageBox.TYPE_ERROR) -- 2.7.4