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

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


Author: fatih
Date: Wed Sep  5 10:59:41 2007
New Revision: 15298

Modified:
   trunk/staj-projeleri/zorg/zorg/hwdata.py
   trunk/staj-projeleri/zorg/zorg/probe.py
Log:
Log parsing code for RandR 1.2 enabled drivers


Modified: trunk/staj-projeleri/zorg/zorg/hwdata.py
=================================================================
--- trunk/staj-projeleri/zorg/zorg/hwdata.py	(original)
+++ trunk/staj-projeleri/zorg/zorg/hwdata.py	Wed Sep  5 10:59:41 2007
@@ -77,6 +77,7 @@
 
         self.outputs = {}
         self.monitors = []
+        self.tvStandards = []
 
         self.randr12 = False
 

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:41 2007
@@ -1,6 +1,7 @@
 # -*- coding: utf-8 -*-
 
 import os
+import re
 import struct
 
 from zorg.hwdata import *
@@ -232,7 +233,44 @@
         device.monitors = findMonitors(device, 0, 1)
 
 def queryRandrOutputs(device):
-    pass
+    lines = xserverProbe(device)
+    if not lines:
+        return
+
+    findOutput = re.compile("^.*: Output (\S+) (.*)$")
+    outStates = ("connected", "disconnected", "enabled by config file")
+
+    parsingModesFor = ""
+
+    for line in lines:
+        if "Output" in line:
+            matched = findOutput.match(line)
+            if matched:
+                name, state = matched.groups()
+                if device.outputs.has_key(name) or not state in outStates:
+                    continue
+                else:
+                    device.outputs[name] = []
+
+        elif "Printing probed modes for output" in line:
+            name = line.rsplit(None, 1)[-1]
+            if device.outputs.has_key(name) and not device.outputs[name]:
+                parsingModesFor = name
+
+        elif parsingModesFor:
+            fields = line.split()
+            if "Modeline" in fields:
+                modeWithRate = fields[fields.index("Modeline") + 1]
+                mode, rate = modeWithRate.rsplit("x", 1)
+                mode = mode.strip('"')
+
+                if not mode in device.outputs[parsingModesFor]:
+                    device.outputs[parsingModesFor].append(mode)
+            else:
+                parsingModesFor = ""
+
+        elif "TV standards supported by chip:" in line:
+            device.tvStandards = line.strip().rsplit(": ", 1)[1].split()
 
 def queryNvidiaOutputs(device):
     pass


Uludag-commits mesaj listesiyle ilgili daha fazla bilgi