Blob Blame History Raw
diff -up xorg-server-1.3.0.0/hw/xfree86/modes/xf86Crtc.c.jx xorg-server-1.3.0.0/hw/xfree86/modes/xf86Crtc.c
--- xorg-server-1.3.0.0/hw/xfree86/modes/xf86Crtc.c.jx	2007-10-03 13:10:28.000000000 -0400
+++ xorg-server-1.3.0.0/hw/xfree86/modes/xf86Crtc.c	2007-10-05 09:58:11.000000000 -0400
@@ -1420,6 +1420,9 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, 
 	    {
 		if (!strcmp (preferred_mode, mode->name))
 		{
+		    DisplayModePtr m;
+
+		    /* Sort it to the front of the list */
 		    if (mode != output->probed_modes)
 		    {
 			if (mode->prev)
@@ -1431,10 +1434,17 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, 
 			mode->prev = NULL;
 			output->probed_modes = mode;
 		    }
+
+		    /* Mark it preferred */
 		    mode->type |= M_T_PREFERRED;
+
+		    /* And unprefer everything else */
+		    for (m = output->probed_modes; m; m = m->next)
+			if (m != mode)
+			    m->type &= ~M_T_PREFERRED;
+
+		    break;
 		}
-		else
-		    mode->type &= ~M_T_PREFERRED;
 	    }
 	}