diff options
author | hschang <chang@dev3> | 2016-12-02 10:52:25 (GMT) |
---|---|---|
committer | hschang <chang@dev3> | 2016-12-02 10:52:25 (GMT) |
commit | 7b770c4d5780e873a4e36e09a30d1b552fde6ea0 (patch) | |
tree | fe8f4a573bfbbd484b7983f513bafbedf14845fc | |
parent | e84c2e25570982347f924728941ce7e62b6eff2f (diff) |
Fix HDMI-IN extension menu.
-rwxr-xr-x | lib/python/Screens/InfoBarGenerics.py | 40 |
1 files 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) |