Skip to content

Commit

Permalink
[StartEnigma et al] call AVSwitch after StartEnigma initialisation
Browse files Browse the repository at this point in the history
  • Loading branch information
TwolDE2 committed Feb 7, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
1 parent c305f3d commit 5c0a327
Showing 6 changed files with 63 additions and 49 deletions.
4 changes: 3 additions & 1 deletion data/videowizard.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<!--suppress XmlUnboundNsPrefix -->
<wizard>
from Components.AVSwitch import iAVSwitch as avSwitch
<step id="inputselection" nextstep="modeselection" timeout="10" timeoutaction="selectnext">
<condition>
self.condition = len(self.listInputChannels()) > 1
@@ -42,7 +43,8 @@ self.selectKey("DOWN")
</step>
<step id="end">
<code>
self.hw.saveMode(self.port, self.mode, self.rate)
from Components.AVSwitch import iAVSwitch as avSwitch
avSwitch.saveMode(self.port, self.mode, self.rate)
from Components.config import configfile
configfile.save()
self.markDone()
12 changes: 6 additions & 6 deletions lib/python/Screens/InfoBarGenerics.py
Original file line number Diff line number Diff line change
@@ -739,14 +739,14 @@ def doDimming(self):

def unDimming(self):
self.unDimmingTimer.stop()
self.doWriteAlpha(config.av.osd_alpha.value)
self.doWriteAlpha(config.misc.osd_alpha.value)

def doWriteAlpha(self, value):
if fileExists("/proc/stb/video/alpha"):
f = open("/proc/stb/video/alpha", "w")
f.write("%i" % (value))
f.close()
if value == config.av.osd_alpha.value:
if value == config.misc.osd_alpha.value:
self.lastResetAlpha = True
else:
self.lastResetAlpha = False
@@ -849,14 +849,14 @@ def doTimerHide(self):
def doHide(self):
if self.__state != self.STATE_HIDDEN:
if self.dimmed > 0:
self.doWriteAlpha((config.av.osd_alpha.value * self.dimmed / config.usage.show_infobar_dimming_speed.value))
self.doWriteAlpha((config.misc.osd_alpha.value * self.dimmed / config.usage.show_infobar_dimming_speed.value))
self.DimmingTimer.start(5, True)
else:
self.DimmingTimer.stop()
self.hide()
elif self.__state == self.STATE_HIDDEN and self.secondInfoBarScreen and self.secondInfoBarScreen.shown:
if self.dimmed > 0:
self.doWriteAlpha((config.av.osd_alpha.value * self.dimmed / config.usage.show_infobar_dimming_speed.value))
self.doWriteAlpha((config.misc.osd_alpha.value * self.dimmed / config.usage.show_infobar_dimming_speed.value))
self.DimmingTimer.start(5, True)
else:
self.DimmingTimer.stop()
@@ -871,7 +871,7 @@ def doHide(self):
self.EventViewIsShown = False
# elif hasattr(self, "pvrStateDialog"):
# if self.dimmed > 0:
# self.doWriteAlpha((config.av.osd_alpha.value*self.dimmed/config.usage.show_infobar_dimming_speed.value))
# self.doWriteAlpha((config.misc.osd_alpha.value*self.dimmed/config.usage.show_infobar_dimming_speed.value))
# self.DimmingTimer.start(5, True)
# else:
# self.DimmingTimer.stop()
@@ -932,7 +932,7 @@ def lockShow(self):

def unlockShow(self):
if config.usage.show_infobar_do_dimming.value and self.lastResetAlpha is False:
self.doWriteAlpha(config.av.osd_alpha.value)
self.doWriteAlpha(config.misc.osd_alpha.value)
try:
self.__locked -= 1
except:
18 changes: 12 additions & 6 deletions lib/python/Screens/Standby.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
from os import path
from time import time

from enigma import eDVBVolumecontrol, eTimer, eDVBLocalTimeHandler, eServiceReference, eStreamServer, iRecordableService, quitMainloop
from enigma import eAVSwitch, eDVBVolumecontrol, eTimer, eDVBLocalTimeHandler, eServiceReference, eStreamServer, iRecordableService, quitMainloop

from Components.ActionMap import ActionMap
from Components.AVSwitch import AVSwitch
from Components.config import config
from Components.Console import Console
import Components.ParentalControl
@@ -61,7 +60,6 @@ def leaveMute(self):
def __init__(self, session):
Screen.__init__(self, session)
self.skinName = "Standby"
self.avswitch = AVSwitch()

print("[Standby] enter standby")

@@ -114,9 +112,9 @@ def __init__(self, session):
self.infoBarInstance and hasattr(self.infoBarInstance, "showPiP") and self.infoBarInstance.showPiP()

if SystemInfo["ScartSwitch"]:
self.avswitch.setInput("SCART")
self.setInput("SCART")
else:
self.avswitch.setInput("AUX")
self.setInput("AUX")
if SystemInfo["brand"] in ('dinobot') or SystemInfo["HasHiSi"] or SystemInfo["boxtype"] in ("sfx6008", "sfx6018"):
try:
open("/proc/stb/hdmi/output", "w").write("off")
@@ -141,7 +139,7 @@ def __onClose(self):
self.session.nav.playService(self.prev_running_service)
self.session.screen["Standby"].boolean = False
globalActionMap.setEnabled(True)
self.avswitch.setInput("ENCODER")
self.setInput("ENCODER")
self.leaveMute()
if path.exists("/usr/scripts/standby_leave.sh"):
Console().ePopen("/usr/scripts/standby_leave.sh")
@@ -161,6 +159,14 @@ def stopService(self):
self.prev_running_service = eServiceReference(config.tv.lastservice.value)
self.session.nav.stopService()

def setInput(self, input):
INPUT = {
"ENCODER": 0,
"SCART": 1,
"AUX": 2
}
eAVSwitch.getInstance().setInput(INPUT[input])


class Standby(Standby2):
def __init__(self, session):
6 changes: 4 additions & 2 deletions lib/python/Screens/UserInterfacePositioner.py
Original file line number Diff line number Diff line change
@@ -40,7 +40,7 @@ def InitOsd():
config.osd.dst_top = ConfigSelectionNumber(default=0, stepwidth=1, min=0, max=576, wraparound=False)
config.osd.dst_height = ConfigSelectionNumber(default=576, stepwidth=1, min=0, max=576, wraparound=False)
config.osd.alpha = ConfigSelectionNumber(default=255, stepwidth=1, min=0, max=255, wraparound=False)
config.av.osd_alpha = NoSave(ConfigNumber(default=255))
config.misc.osd_alpha = NoSave(ConfigNumber(default=255))
config.osd.threeDmode = ConfigSelection([("off", _("Off")), ("auto", _("Auto")), ("sidebyside", _("Side by Side")), ("topandbottom", _("Top and Bottom"))], "auto")
config.osd.threeDznorm = ConfigSlider(default=50, increment=1, limits=(0, 100))
config.osd.show3dextensions = ConfigYesNo(default=False)
@@ -97,7 +97,7 @@ def setOSDHeight(configElement):
def setOSDAlpha(configElement):
if SystemInfo["CanChangeOsdAlpha"]:
print('[UserInterfacePositioner] Setting OSD alpha:', str(configElement.value))
config.av.osd_alpha.setValue(configElement.value)
config.misc.osd_alpha.setValue(configElement.value)
f = open("/proc/stb/video/alpha", "w")
f.write(str(configElement.value))
f.close()
@@ -158,6 +158,7 @@ def welcomeAction(self, answer):
if self.restoreService not in self.onClose:
self.onClose.append(self.restoreService)
self.ConsoleB.ePopen('/usr/bin/showiframe /usr/share/enigma2/hd-testcard.mvi')
# config.osd.alpha.setValue(155)
else:
self.close()

@@ -212,6 +213,7 @@ def __onClose(self):
# This is called by the Wizard...

def run(self):
# config.osd.alpha.setValue(self.alpha)
config.osd.dst_left.save()
config.osd.dst_width.save()
config.osd.dst_top.save()
66 changes: 34 additions & 32 deletions lib/python/Screens/VideoWizard.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
from Components.config import config, ConfigBoolean, configfile
from Components.Pixmap import Pixmap
from Components.SystemInfo import SystemInfo, BoxInfo
from Screens.Rc import Rc
from Screens.Wizard import WizardSummary
from Screens.WizardLanguage import WizardLanguage
from Screens.Rc import Rc
from Components.AVSwitch import iAVSwitch as iAV

from Components.Pixmap import Pixmap
from Components.config import config, ConfigBoolean, configfile
from Components.SystemInfo import SystemInfo

from Tools.Directories import resolveFilename, SCOPE_SKIN, SCOPE_CURRENT_SKIN
# from Tools.HardwareInfo import HardwareInfo

config.misc.showtestcard = ConfigBoolean(default=False)

@@ -49,14 +45,18 @@ class VideoWizard(WizardLanguage, Rc):
</screen>"""

def __init__(self, session):
# FIXME anyone knows how to use relative paths from the plugin's directory?
self.xmlfile = resolveFilename(SCOPE_SKIN, "videowizard.xml")
self.hw = iAV # needed by VideoWizard.xml do not change
WizardLanguage.__init__(self, session, showSteps=False, showStepSlider=False)
Rc.__init__(self)
from Components.AVSwitch import iAVSwitch as avSwitch
self.avSwitch = avSwitch
self["wizard"] = Pixmap()
self["portpic"] = Pixmap()

self.hasDVI = BoxInfo.getItem("dvi", False)
self.hasJack = BoxInfo.getItem("avjack", False)
self.hasRCA = BoxInfo.getItem("rca", False)
self.hasSCART = BoxInfo.getItem("scart", False)
self.portCount = 0
self.port = None
self.mode = None
self.rate = None
@@ -66,20 +66,22 @@ def createSummary(self):
return VideoWizardSummary

def markDone(self):
iAV.saveMode(self.port, self.mode, self.rate)
self.avSwitch.saveMode(self.port, self.mode, self.rate)
config.misc.videowizardenabled.value = 0
config.misc.videowizardenabled.save()
configfile.save()

def listInputChannels(self):
# hw_type = HardwareInfo().get_device_name()
# has_hdmi = HardwareInfo().has_hdmi()
list = []
for port in iAV.getPortList():
if iAV.isPortUsed(port):
for port in self.avSwitch.getPortList():
if self.avSwitch.isPortUsed(port):
descr = port
if descr == "Scart" and not SystemInfo["hasScart"]:
continue
if descr == "HDMI" and self.hasDVI:
descr = "DVI"
if descr == "Scart" and self.hasRCA and not self.hasSCART:
descr = "RCA"
if descr == "Scart" and self.hasJack and not self.hasSCART:
descr = "Jack"
if port != "DVI-PC":
list.append((descr, port))
list.sort(key=lambda x: x[0])
@@ -92,8 +94,6 @@ def inputSelectionMade(self, index):
self.inputSelect(index)

def inputSelectionMoved(self):
# hw_type = HardwareInfo().get_device_name()
# has_hdmi = HardwareInfo().has_hdmi()
print("[VideoWizard] input selection moved:", self.selection)
self.inputSelect(self.selection)
if self["portpic"].instance is not None:
@@ -106,17 +106,17 @@ def inputSelectionMoved(self):

def inputSelect(self, port):
print("[VideoWizard] inputSelect:", port)
modeList = iAV.getModeList(self.selection)
modeList = self.avSwitch.getModeList(self.selection)
print("[VideoWizard] modeList:", modeList)
self.port = port
if len(modeList) > 0:
ratesList = self.listRates(modeList[0][0])
iAV.setMode(port=port, mode=modeList[0][0], rate=ratesList[0][0])
self.avSwitch.setMode(port=port, mode=modeList[0][0], rate=ratesList[0][0])

def listModes(self):
list = []
print("[VideoWizard] modes for port", self.port)
for mode in iAV.getModeList(self.port):
for mode in self.avSwitch.getModeList(self.port):
# if mode[0] != "PC":
list.append((mode[0], mode[0]))
print("[VideoWizard] modeslist:", list)
@@ -135,20 +135,22 @@ def modeSelect(self, mode):
ratesList = self.listRates(mode)
print("[VideoWizard] ratesList:", ratesList)
if self.port == "HDMI" and mode in ("720p", "1080i", "1080p", "2160p"):
self.rate = "multi"
iAV.setMode(port=self.port, mode=mode, rate="multi")
self.rate = "auto"
self.avSwitch.setMode(port=self.port, mode=mode, rate="auto")
else:
iAV.setMode(port=self.port, mode=mode, rate=ratesList[0][0])
self.avSwitch.setMode(port=self.port, mode=mode, rate=ratesList[0][0])

def listRates(self, querymode=None):
if querymode is None:
querymode = self.mode
list = []
print("[VideoWizard] modes for port", self.port, "and mode", querymode)
for mode in iAV.getModeList(self.port):
for mode in self.avSwitch.getModeList(self.port):
print("[VideoWizard] mode:", mode)
if mode[0] == querymode:
for rate in mode[1]:
if rate == "auto" and not SystemInfo["Has24hz"]:
continue
if self.port == "DVI-PC":
print("[VideoWizard] rate:", rate)
if rate == "640x480":
@@ -167,7 +169,7 @@ def rateSelectionMoved(self):
self.rateSelect(self.selection)

def rateSelect(self, rate):
iAV.setMode(port=self.port, mode=self.mode, rate=rate)
self.avSwitch.setMode(port=self.port, mode=self.mode, rate=rate)

def showTestCard(self, selection=None):
if selection is None:
@@ -181,12 +183,12 @@ def showTestCard(self, selection=None):
def keyNumberGlobal(self, number):
if number in (1, 2, 3):
if number == 1:
iAV.saveMode("HDMI", "720p", "multi")
self.avSwitch.saveMode("HDMI", "720p", "multi")
elif number == 2:
iAV.saveMode("HDMI", "1080i", "multi")
self.avSwitch.saveMode("HDMI", "1080i", "multi")
elif number == 3:
iAV.saveMode("Scart", "Multi", "multi")
iAV.setConfiguredMode()
self.avSwitch.saveMode("Scart", "Multi", "multi")
self.avSwitch.setConfiguredMode()
self.close()

WizardLanguage.keyNumberGlobal(self, number)
6 changes: 4 additions & 2 deletions lib/python/StartEnigma.py
Original file line number Diff line number Diff line change
@@ -368,8 +368,10 @@ def runNextScreen(session, screensToRun, *result):
session.scart = AutoScartControl(session)

profile("Init:AutoVideoMode")
import Screens.VideoMode
Screens.VideoMode.autostart(session)
from Tools.Directories import isPluginInstalled # noqa: E402 don't move this import
if config.av.fixres.value != "disabled" and not isPluginInstalled("AutoResolution"):
import Screens.VideoMode
Screens.VideoMode.autostart(session)

profile("RunReactor")
profile_final()

0 comments on commit 5c0a327

Please sign in to comment.