[Uludag-commits] r14674 - trunk/staj-projeleri/zorg/zorg/ddc

uludag-commits at pardus.org.tr uludag-commits at pardus.org.tr
3 Tem 2007 Sal 11:06:06 EEST


Author: fatih
Date: Tue Jul  3 11:06:06 2007
New Revision: 14674

Modified:
   trunk/staj-projeleri/zorg/zorg/ddc/ddc.c
Log:
* Fixed some memory leaks.
* Remove the code waiting for monitors to respond. That is not true.


Modified: trunk/staj-projeleri/zorg/zorg/ddc/ddc.c
=================================================================
--- trunk/staj-projeleri/zorg/zorg/ddc/ddc.c	(original)
+++ trunk/staj-projeleri/zorg/zorg/ddc/ddc.c	Tue Jul  3 11:06:06 2007
@@ -241,6 +241,7 @@
 PyObject*
 ddc_vbeInfo(PyObject *self, PyObject *args)
 {
+	PyObject *ret;
 	struct vbe_info *vbe_info = NULL;
 	
 	const char *vendor_name = NULL;
@@ -280,7 +281,7 @@
 		}
 	}
 	
-	return Py_BuildValue(
+	ret = Py_BuildValue(
 		"{s:s#,"	/* signature */
 		"s:(i,i),"	/* version */
 		"s:s,"		/* oem_name */
@@ -299,6 +300,9 @@
 		"memory_size", vbe_info->memory_size,
 		"mode_list", modes
 	);
+
+	free(vbe_info);
+	return ret;
 }
 
 
@@ -310,6 +314,7 @@
 PyObject*
 ddc_query(PyObject *self, PyObject *args)
 {
+	PyObject *ret;
 	int adapter;
 	struct vbe_edid1_info *edid;
 	
@@ -330,19 +335,14 @@
 		return Py_None;
 	}
 
-	/* Some monitors cannot respond immediately. Wait for a valid EDID. */
-	int i = 20;
-	while (i--) {
-		if (is_valid(edid))
-			break;
-		usleep(50);
-	}
-	if (i < 0 && !is_valid(edid)) {
+	if (!is_valid(edid)) {
+		free(edid);
 		Py_INCREF(Py_None);
 		return Py_None;
 	}
 
 	if (edid->version == 255 && edid->revision == 255) {
+		free(edid);
 		Py_INCREF(Py_None);
 		return Py_None;
 	}
@@ -365,7 +365,7 @@
 		}
 	}
 
-	return Py_BuildValue(
+	ret = Py_BuildValue(
 		"{s:i,"		/* version */
 		"s:i,"		/* revision */
 		"s:i,"		/* serial_number */
@@ -406,6 +406,9 @@
 		"detailed_timing", get_detailed_timing_info(edid),
 		"eisa_id", eisa_id
 	);
+
+	free(edid);
+	return ret;
 }
 
 static PyMethodDef ddc_methods[] = {


Uludag-commits mesaj listesiyle ilgili daha fazla bilgi