[PATCH 2/3] xfree86: Refactor xf86MonitorIsHDMI() using xf86MonitorFindHDMIBlock()

Damien Lespiau damien.lespiau at intel.com
Wed Aug 21 10:25:48 PDT 2013


Signed-off-by: Damien Lespiau <damien.lespiau at intel.com>
---
 hw/xfree86/ddc/interpret_edid.c | 46 +----------------------------------------
 1 file changed, 1 insertion(+), 45 deletions(-)

diff --git a/hw/xfree86/ddc/interpret_edid.c b/hw/xfree86/ddc/interpret_edid.c
index eff928e..96781cb 100644
--- a/hw/xfree86/ddc/interpret_edid.c
+++ b/hw/xfree86/ddc/interpret_edid.c
@@ -757,49 +757,5 @@ validate_version(int scrnIndex, struct edid_version *r)
 Bool
 xf86MonitorIsHDMI(xf86MonPtr mon)
 {
-    int i = 0, version, offset;
-    char *edid = NULL;
-
-    if (!mon)
-        return FALSE;
-
-    if (!(mon->flags & EDID_COMPLETE_RAWDATA))
-        return FALSE;
-
-    if (!mon->no_sections)
-        return FALSE;
-
-    edid = (char *) mon->rawData;
-    if (!edid)
-        return FALSE;
-
-    /* find the CEA extension block */
-    for (i = 1; i <= mon->no_sections; i++)
-        if (edid[i * 128] == 0x02)
-            break;
-    if (i == mon->no_sections + 1)
-        return FALSE;
-    edid += (i * 128);
-
-    version = edid[1];
-    offset = edid[2];
-    if (version < 3 || offset < 4)
-        return FALSE;
-
-    /* walk the cea data blocks */
-    for (i = 4; i < offset; i += (edid[i] & 0x1f) + 1) {
-        char *x = edid + i;
-
-        /* find a vendor specific block */
-        if ((x[0] & 0xe0) >> 5 == 0x03) {
-            int oui = (x[3] << 16) + (x[2] << 8) + x[1];
-
-            /* find the HDMI vendor OUI */
-            if (oui == IEEE_ID_HDMI)
-                return TRUE;
-        }
-    }
-
-    /* guess it's not HDMI after all */
-    return FALSE;
+    return xf86MonitorFindHDMIBlock(mon) != NULL;
 }
-- 
1.8.3.1



More information about the xorg-devel mailing list