fixes bug #291
authorStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Mon, 16 Nov 2009 18:03:34 +0000 (19:03 +0100)
committerthedoc <thedoc@atom.(none)>
Wed, 23 Dec 2009 10:38:01 +0000 (11:38 +0100)
don't crash if auto scart switching is enabled and the scart voltage is high on enigma2 startup
not the best solution since the whole scart switching stuff is broken by design, but this fix prevents the crash

lib/python/Screens/MessageBox.py
lib/python/Screens/Scart.py

index 86bf07d3b69bff1fc2b18799d521d548e2b35419..f3538b7b730090e71cd6e1fdc4041ec39ec33eee 100644 (file)
@@ -12,9 +12,11 @@ class MessageBox(Screen):
        TYPE_WARNING = 2
        TYPE_ERROR = 3
 
-       def __init__(self, session, text, type = TYPE_YESNO, timeout = -1, close_on_any_key = False, default = True, enable_input = True):
+       def __init__(self, session, text, type = TYPE_YESNO, timeout = -1, close_on_any_key = False, default = True, enable_input = True, msgBoxID = None):
                self.type = type
                Screen.__init__(self, session)
+               
+               self.msgBoxID = msgBoxID
 
                self["text"] = Label(text)
                self["Text"] = StaticText(text)
index dc511448d1fcd0cb123a01db14b20b25f50f28ba..00e78593a6abc592d6a0b8b998e9a8502bc560cd 100644 (file)
@@ -1,10 +1,13 @@
 from Screen import Screen
 from MessageBox import MessageBox
 from Components.AVSwitch import AVSwitch
+from Tools import Notifications
 
 class Scart(Screen):
        def __init__(self, session, start_visible=True):
                Screen.__init__(self, session)
+               self.msgBox = None
+               self.notificationVisible = None
 
                self.avswitch = AVSwitch()
 
@@ -22,7 +25,11 @@ class Scart(Screen):
                if not self.msgVisible:
                        self.msgVisible = True
                        self.avswitch.setInput("SCART")
-                       self.msgBox = self.session.openWithCallback(self.MsgBoxClosed, MessageBox, _("If you see this, something is wrong with\nyour scart connection. Press OK to return."), MessageBox.TYPE_ERROR)
+                       if not self.session.in_exec:
+                               self.notificationVisible = True
+                               Notifications.AddNotificationWithCallback(self.MsgBoxClosed, MessageBox, _("If you see this, something is wrong with\nyour scart connection. Press OK to return."), MessageBox.TYPE_ERROR, msgBoxID = "scart_msgbox")
+                       else:
+                               self.msgBox = self.session.openWithCallback(self.MsgBoxClosed, MessageBox, _("If you see this, something is wrong with\nyour scart connection. Press OK to return."), MessageBox.TYPE_ERROR)
 
        def MsgBoxClosed(self, *val):
                self.msgBox = None
@@ -35,3 +42,13 @@ class Scart(Screen):
                                return
                        self.avswitch.setInput("ENCODER")
                        self.msgVisible = False
+               if self.notificationVisible:
+                       self.avswitch.setInput("ENCODER")
+                       self.notificationVisible = False
+                       for notification in Notifications.current_notifications:
+                               try:
+                                       if notification[1].msgBoxID == "scart_msgbox":
+                                               notification[1].close()
+                               except:
+                                       print "other notification is open. try another one."
+                       
\ No newline at end of file