reset config.skin.primary_skin to default skin on skin load error
[enigma2.git] / skin.py
diff --git a/skin.py b/skin.py
index 1f5c9cfc6af0d73fa1e27eec970d4d989a9e8fc5..ed48546e798f8e2fe64326c6f8e4381a93bee690 100644 (file)
--- a/skin.py
+++ b/skin.py
@@ -56,7 +56,9 @@ try:
 except (SkinError, IOError, AssertionError), err:
        print "SKIN ERROR:", err
        print "defaulting to standard skin..."
+       config.skin.primary_skin.value = 'skin.xml'
        loadSkin('skin.xml')
+
 loadSkin('skin_default.xml')
 
 def parsePosition(str):
@@ -217,7 +219,23 @@ def loadSingleSkinData(desktop, dom_skin, path_prefix):
        
        skin = dom_skin.childNodes[0]
        assert skin.tagName == "skin", "root element in skin must be 'skin'!"
-       
+
+       for c in elementsWithTag(skin.childNodes, "output"):
+               id = int(c.getAttribute("id") or "0")
+               if id == 0: # framebuffer
+                       for res in elementsWithTag(c.childNodes, "resolution"):
+                               xres = int(res.getAttribute("xres" or "720"))
+                               yres = int(res.getAttribute("yres" or "576"))
+                               bpp = int(res.getAttribute("bpp" or "32"))
+
+                               from enigma import gFBDC
+                               i = gFBDC.getInstance()
+                               i.setResolution(xres, yres)
+
+                               if bpp != 32:
+                                       # load palette (not yet implemented)
+                                       pass
+
        for c in elementsWithTag(skin.childNodes, "colors"):
                for color in elementsWithTag(c.childNodes, "color"):
                        name = str(color.getAttribute("name"))