5fef01c
From bd9c6b3a4d726a3f83ac6d8cf7211eddbc28f25a Mon Sep 17 00:00:00 2001
5fef01c
From: Adam Jackson <ajax@redhat.com>
5fef01c
Date: Tue, 14 Oct 2008 14:04:01 -0400
5fef01c
Subject: [PATCH] EDID: Catch even more cases of encoding aspect as size.
5fef01c
5fef01c
Very cute, Samsung, not only do you claim to be 16cm by 9cm in the
5fef01c
global size record, you also claim to be 160mm by 90mm in the detailed
5fef01c
timings.  Grrr.
5fef01c
---
5fef01c
 hw/xfree86/ddc/interpret_edid.c |   10 +++++++---
5fef01c
 1 files changed, 7 insertions(+), 3 deletions(-)
5fef01c
5fef01c
diff --git a/hw/xfree86/ddc/interpret_edid.c b/hw/xfree86/ddc/interpret_edid.c
5fef01c
index 3596e87..fbb17b1 100644
5fef01c
--- a/hw/xfree86/ddc/interpret_edid.c
5fef01c
+++ b/hw/xfree86/ddc/interpret_edid.c
5fef01c
@@ -115,12 +115,16 @@ handle_edid_quirks(xf86MonPtr m)
5fef01c
 	    }
5fef01c
 	}
5fef01c
 
5fef01c
-	if (real_hsize && real_vsize) {
5fef01c
+	if (!real_hsize || !real_vsize) {
5fef01c
+	    m->features.hsize = m->features.vsize = 0;
5fef01c
+	} else if ((m->features.hsize * 10 == real_hsize) &&
5fef01c
+		   (m->features.vsize * 10 == real_vsize)) {
5fef01c
+	    /* exact match is just unlikely, should do a better check though */
5fef01c
+	    m->features.hsize = m->features.vsize = 0;
5fef01c
+	} else {
5fef01c
 	    /* convert mm to cm */
5fef01c
 	    m->features.hsize = (real_hsize + 5) / 10;
5fef01c
 	    m->features.vsize = (real_vsize + 5) / 10;
5fef01c
-	} else {
5fef01c
-	    m->features.hsize = m->features.vsize = 0;
5fef01c
 	}
5fef01c
 	
5fef01c
 	xf86Msg(X_INFO, "Quirked EDID physical size to %dx%d cm\n",
5fef01c
-- 
5fef01c
1.6.0.1
5fef01c