rpms/xorg-x11-server/devel xorg-x11-server-1.1.1-edid-root-window-properties.patch, NONE, 1.1 xorg-x11-server.spec, 1.115, 1.116

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Wed Jul 12 20:26:47 UTC 2006


Author: ajackson

Update of /cvs/dist/rpms/xorg-x11-server/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv31122

Modified Files:
	xorg-x11-server.spec 
Added Files:
	xorg-x11-server-1.1.1-edid-root-window-properties.patch 
Log Message:
* Wed Jul 12 2006 Adam Jackson <ajackson at redhat.com> 1.1.1-4.fc6
- Restore placing the raw EDID block on the root window.


xorg-x11-server-1.1.1-edid-root-window-properties.patch:
 ddcProperty.c |   91 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 88 insertions(+), 3 deletions(-)

--- NEW FILE xorg-x11-server-1.1.1-edid-root-window-properties.patch ---
--- xorg-server-1.1.1/hw/xfree86/ddc/ddcProperty.c.edid-on-root-window	2006-07-12 16:06:31.000000000 -0400
+++ xorg-server-1.1.1/hw/xfree86/ddc/ddcProperty.c	2006-07-12 16:06:31.000000000 -0400
@@ -27,6 +27,10 @@
 
 #include "xf86.h"
 #include "xf86DDC.h"
+#include <X11/Xatom.h>
+#include "property.h"
+#include "propertyst.h"
+#include "xf86DDC.h"
 
 /*
  * xf86Mode.c should have a some more DisplayModePtr list handling.
@@ -405,9 +409,88 @@
     }
 }
 
-/*
- * Empty shell that keeps most drivers happy.
- */
+#define EDID1_ATOM_NAME         "XFree86_DDC_EDID1_RAWDATA"
+#define EDID2_ATOM_NAME         "XFree86_DDC_EDID2_RAWDATA"
+#define VDIF_ATOM_NAME          "XFree86_DDC_VDIF_RAWDATA"
+
+static void
+addRootWindowProperties(ScrnInfoPtr pScrn, xf86MonPtr DDC)
+{
+    Atom EDID1Atom=-1, EDID2Atom=-1;
+    CARD8 *EDID1rawdata = NULL;
+    CARD8 *EDID2rawdata = NULL;
+    int i, scrnIndex = pScrn->scrnIndex;
+    Bool makeEDID1prop = FALSE;
+    Bool makeEDID2prop = FALSE;
+
+    if (DDC->ver.version == 1) {
+	makeEDID1prop = TRUE;
+    } else if (DDC->ver.version == 2) {
+	int checksum1;
+	int checksum2;
+	makeEDID2prop = TRUE;
+
+	/* Some monitors (eg Panasonic PanaSync4)
+	 * report version==2 because they used EDID v2 spec document,
+	 * although they use EDID v1 data structure :-(
+	 *
+	 * Try using checksum to determine when we have such a monitor.
+	 */
+	checksum2 = 0;
+	for (i = 0; i < 256; i++)
+	    checksum2 += DDC->rawData[i];
+	if (checksum2 % 256) {
+	    xf86DrvMsg(scrnIndex, X_INFO, "Monitor EDID v2 checksum failed\n");
+	    xf86DrvMsg(scrnIndex, X_INFO,
+		    "XFree86_DDC_EDID2_RAWDATA property may be bad\n");
+	    checksum1 = 0;
+	    for (i = 0; i < 128; i++)
+		checksum1 += DDC->rawData[i];
+	    if (!(checksum1 % 256)) {
+		xf86DrvMsg(scrnIndex, X_INFO,
+			"Monitor EDID v1 checksum passed,\n");
+		xf86DrvMsg(scrnIndex, X_INFO,
+			"XFree86_DDC_EDID1_RAWDATA property created\n");
+		makeEDID1prop = TRUE;
+	    }
+	}
+    } else {
+	xf86DrvMsg(scrnIndex, X_PROBED, "unexpected EDID version %d.%d\n",
+		DDC->ver.version, DDC->ver.revision);
+	return;
+    }
+
+    if (makeEDID1prop) {
+	if ((EDID1rawdata = xalloc(128*sizeof(CARD8)))==NULL)
+	    return;
+
+	EDID1Atom = MakeAtom(EDID1_ATOM_NAME, sizeof(EDID1_ATOM_NAME), TRUE);
+	memcpy(EDID1rawdata, DDC->rawData, 128);
+	xf86RegisterRootWindowProperty(scrnIndex, EDID1Atom, XA_INTEGER, 8,
+		128, (unsigned char *)EDID1rawdata);
+    } 
+
+    if (makeEDID2prop) {
+	if ((EDID2rawdata = xalloc(256*sizeof(CARD8)))==NULL)
+	    return;
+
+	memcpy(EDID2rawdata, DDC->rawData, 256);
+	EDID2Atom = MakeAtom(EDID2_ATOM_NAME, sizeof(EDID2_ATOM_NAME), TRUE);
+	xf86RegisterRootWindowProperty(scrnIndex, EDID2Atom, XA_INTEGER, 8,
+		256, (unsigned char *)EDID2rawdata);
+    }
+
+#if 0
+    if (DDC->vdif) {
+#define VDIF_DUMMY_STRING "setting dummy VDIF property - please insert correct values\n"
+
+	VDIFAtom = MakeAtom(VDIF_ATOM_NAME, sizeof(VDIF_ATOM_NAME), TRUE);
+	xf86RegisterRootWindowProperty(scrnIndex, VDIFAtom, XA_STRING, 8,
+		strlen(VDIF_DUMMY_STRING), VDIF_DUMMY_STRING);
+    }
+#endif
+}
+
 Bool
 xf86SetDDCproperties(ScrnInfoPtr pScrn, xf86MonPtr DDC)
 {
@@ -416,5 +499,7 @@
 
     xf86DDCMonitorSet(pScrn->scrnIndex, pScrn->monitor, DDC);
 
+    addRootWindowProperties(pScrn, DDC);
+
     return TRUE;
 }


Index: xorg-x11-server.spec
===================================================================
RCS file: /cvs/dist/rpms/xorg-x11-server/devel/xorg-x11-server.spec,v
retrieving revision 1.115
retrieving revision 1.116
diff -u -r1.115 -r1.116
--- xorg-x11-server.spec	12 Jul 2006 09:19:02 -0000	1.115
+++ xorg-x11-server.spec	12 Jul 2006 20:26:45 -0000	1.116
@@ -9,7 +9,7 @@
 # upgrades to officially released distribution releases, if the package
 # Version field above is not changing, append and/or bump a digit /after/
 # the dist tag.  ie:  25%{dist}.0 -> 25%{dist}.1 ...
-Release:   3.1%{?dist}
+Release:   4%{?dist}
 URL:       http://www.x.org
 License:   MIT/X11
 Group:     User Interface/X
@@ -48,6 +48,7 @@
 Patch3004:  xorg-x11-server-1.1.0-no-autoconfig-targetrefresh.patch
 Patch3005:  xorg-x11-server-1.1.1-getconfig-pl-die-die-die.patch
 Patch3006:  xorg-x11-server-1.1.1-dpms-on-by-default.patch
+Patch3007:  xorg-x11-server-1.1.1-edid-root-window-properties.patch
 
 %define moduledir	%{_libdir}/xorg/modules
 %define drimoduledir	%{_libdir}/dri
@@ -313,6 +314,7 @@
 %patch3004 -p1 -b .targetrefresh
 %patch3005 -p1 -b .getconfig-pl-die-die-die
 %patch3006 -p1 -b .dpms-on-by-default
+%patch3007 -p1 -b .edid-on-root-window
 
 %build
 #FONTDIR="${datadir}/X11/fonts"
@@ -638,7 +640,10 @@
 # -------------------------------------------------------------------
 
 %changelog
-* Wed Jul 12 2006 Jesse Keating <jkeating at redhat.com> - sh: line 0: fg: no job control
+* Wed Jul 12 2006 Adam Jackson <ajackson at redhat.com> 1.1.1-4.fc6
+- Restore placing the raw EDID block on the root window.
+
+* Wed Jul 12 2006 Jesse Keating <jkeating at redhat.com> 1.1.1-3.1.fc6
 - rebuild
 
 * Tue Jul 11 2006 Adam Jackson <ajackson at redhat.com> 1.1.1-3.fc6




More information about the fedora-cvs-commits mailing list