summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhschang <chang@dev3>2016-12-02 10:52:25 (GMT)
committerhschang <chang@dev3>2016-12-02 10:52:25 (GMT)
commit7b770c4d5780e873a4e36e09a30d1b552fde6ea0 (patch)
treefe8f4a573bfbbd484b7983f513bafbedf14845fc
parente84c2e25570982347f924728941ce7e62b6eff2f (diff)
Fix HDMI-IN extension menu.
-rwxr-xr-xlib/python/Screens/InfoBarGenerics.py40
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)