6535006:Install Window is too small for x86 for certain monitors for snv_58 and s10u4_03 nv_63
authorHenry Zhao <Henry.Zhao@Sun.COM>
Fri, 06 Apr 2007 16:59:07 -0700
changeset 140 fb0ff1642f9a
parent 139 6e1ef0ceaabd
child 141 7854d66231b1
6535006:Install Window is too small for x86 for certain monitors for snv_58 and s10u4_03
open-src/xserver/xorg/6535006.patch
open-src/xserver/xorg/Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/6535006.patch	Fri Apr 06 16:59:07 2007 -0700
@@ -0,0 +1,80 @@
+--- hw/xfree86/common/xf86Mode.c	Tue Mar 27 17:16:56 2007
++++ hw/xfree86/common/xf86Mode.c	Thu Mar 29 16:19:38 2007
+@@ -1508,14 +1508,7 @@
+ 	virtX = virtualX;
+ 	virtY = virtualY;
+ 	scrp->virtualFrom = X_CONFIG;
+-    } else if (!modeNames || !*modeNames) {
+-	/* No virtual size given in the config, try to infer */
+-	/* XXX this doesn't take m{in,ax}Pitch into account; oh well */
+-	inferred_virtual = inferVirtualSize(scrp, availModes, &virtX, &virtY);
+-	if (inferred_virtual)
+-	    linePitch = miScanLineWidth(virtX, virtY, minPitch, apertureSize,
+-					BankFormat, pitchInc);
+-    }
++    } 
+ 
+     /* Print clock ranges and scaled clocks */
+     xf86ShowClockRanges(scrp, clockRanges);
+@@ -1593,12 +1586,40 @@
+ 	xf86DeleteMode(&scrp->modes, scrp->modes);
+     endp = &scrp->modes;
+     last = NULL;
+-    if (UseDefaultRate && ((modeNames == NULL) || (*modeNames == NULL))) {
+-	modeNames = xnfcalloc(2, sizeof(char *));
+-	modeNames[0] = strdup("1024x768");
+-	modeNames[1] = NULL;
++    if  ((modeNames == NULL) || (*modeNames == NULL)) {
++	if (UseDefaultRate) {
++	    modeNames = xnfcalloc(2, sizeof(char *));
++	    modeNames[0] = strdup("1024x768");
++	    modeNames[1] = NULL;
++	} else {
++	    char *mode_pref = NULL;
++	    const int types[] = {
++            	M_T_BUILTIN | M_T_PREFERRED,
++            	M_T_USERDEF | M_T_PREFERRED,
++            	M_T_DRIVER | M_T_PREFERRED
++		};
++	    const int ntypes = sizeof(types) / sizeof(int);
++	    int n, type;
++
++	    for (n = 0; n < ntypes; n++) {
++	    	for (p = scrp->modePool;  p != NULL;  p = p->next) {
++		    type = types[n];
++	    	    if ((p->type & type) == type) {
++		    	mode_pref = strdup(p->name);
++		    	break;
++	    	    }
++	    	}
++	    	if (mode_pref)
++		    break;
++	    }
++	    if (mode_pref) {
++	    	modeNames = xnfcalloc(2, sizeof(char *));
++	    	modeNames[0] = strdup(mode_pref);
++	    	modeNames[1] = NULL;
++	    }
++	}
+     }
+-    if (modeNames != NULL) {
++    if ((modeNames != NULL) && (*modeNames != NULL)) {
+ 	for (i = 0; modeNames[i] != NULL; i++) {
+ 	    userModes = TRUE;
+ 	    new = xnfcalloc(1, sizeof(DisplayModeRec));
+@@ -1613,6 +1634,15 @@
+ 	}
+     }
+ 
++    if ((virtualY = 0) && (!modeNames || !*modeNames)) {
++	/* No virtual size given in the config, try to infer */
++	/* XXX this doesn't take m{in,ax}Pitch into account; oh well */
++	inferred_virtual = inferVirtualSize(scrp, availModes, &virtX, &virtY);
++	if (inferred_virtual)
++	    linePitch = miScanLineWidth(virtX, virtY, minPitch, apertureSize,
++					BankFormat, pitchInc);
++    }
++
+     /* Lookup each mode */
+ #ifdef RANDR
+     if (!xf86Info.disableRandR	
--- a/open-src/xserver/xorg/Makefile	Fri Apr 06 12:35:27 2007 -0700
+++ b/open-src/xserver/xorg/Makefile	Fri Apr 06 16:59:07 2007 -0700
@@ -30,7 +30,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.37	07/03/21
+# @(#)Makefile	1.38	07/04/05
 #
 
 PWD:sh=pwd
@@ -95,7 +95,8 @@
 	6406044.patch \
 	cfbmskbits.patch \
 	xf86ModesAdd.patch \
-	lg3d.patch
+	lg3d.patch \
+	6535006.patch
 
 # Directory created by unpacking source
 SOURCE_DIR=$(BUILD_DIR)/$(MODULE_NAME)-$(XORGSERVER_VERS)