[Uludag-commits] r15300 - trunk/staj-projeleri/zorg/zorg

uludag-commits at pardus.org.tr uludag-commits at pardus.org.tr
5 Eyl 2007 Çar 10:59:44 EEST


Author: fatih
Date: Wed Sep  5 10:59:44 2007
New Revision: 15300

Modified:
   trunk/staj-projeleri/zorg/zorg/probe.py
Log:
Log parsing code for NVIDIA proprietary drivers


Modified: trunk/staj-projeleri/zorg/zorg/probe.py
=================================================================
--- trunk/staj-projeleri/zorg/zorg/probe.py	(original)
+++ trunk/staj-projeleri/zorg/zorg/probe.py	Wed Sep  5 10:59:44 2007
@@ -275,7 +275,65 @@
             device.tvStandards = line.strip().rsplit(": ", 1)[1].split()
 
 def queryNvidiaOutputs(device):
-    pass
+    lines = xserverProbe(device)
+    if not lines:
+        return
+
+    device.tvStandards = [
+            "PAL-B",  "PAL-D",  "PAL-G",   "PAL-H",
+            "PAL-I",  "PAL-K1", "PAL-M",   "PAL-N",
+            "PAL-NC", "NTSC-J", "NTSC-M",  "HD480i",
+            "HD480p", "HD720p", "HD1080i", "HD1080p",
+            "HD576i", "HD576p"
+        ]
+
+    # This is for nvidia-old drivers
+    modeFormat = re.compile('.+ "(.+)": .+ MHz, .+ kHz, .+ Hz.*')
+    oldFormat = False
+
+    parsingModesFor = ""
+
+    for line in lines:
+        if "Supported display device(s): " in line:
+            outs = line.rsplit(":", 1)[-1].split(",")
+            for out in outs:
+                out = out.strip()
+                device.outputs[out] = []
+
+        elif "--- Modes in ModePool for " in line:
+            for key in device.outputs.keys():
+                if key in line:
+                    parsingModesFor = key
+                    break
+
+        elif "Validated modes for display device " in line:
+            oldFormat = True
+            for key in device.outputs.keys():
+                if key in line:
+                    parsingModesFor = key
+                    break
+
+        elif parsingModesFor:
+            if not oldFormat:
+                if "--- End of ModePool for " in line:
+                    parsingModesFor = ""
+                    continue
+
+                mode = line.split(":")[2].split("@", 1)[0].replace(" ", "")
+
+                if not mode in device.outputs[parsingModesFor]:
+                    device.outputs[parsingModesFor].append(mode)
+
+            else:
+                matched = modeFormat.match(line)
+                if matched:
+                    mode = matched.groups()[0]
+
+                    if not mode in device.outputs[parsingModesFor]:
+                        device.outputs[parsingModesFor].append(mode)
+
+                else:
+                    parsingModesFor = ""
 
 def queryFglrxOutputs(device):
     pass


Uludag-commits mesaj listesiyle ilgili daha fazla bilgi