64a64bc
--- xorg-server-1.3.0.0/hw/xfree86/modes/xf86Crtc.c.jx	2007-04-16 12:53:50.000000000 -0400
64a64bc
+++ xorg-server-1.3.0.0/hw/xfree86/modes/xf86Crtc.c	2007-05-02 14:03:28.000000000 -0400
64a64bc
@@ -1202,6 +1202,23 @@
64a64bc
     return output;
64a64bc
 }
64a64bc
 
64a64bc
+static char *
64a64bc
+preferredMode(ScrnInfoPtr pScrn, xf86OutputPtr output)
64a64bc
+{
64a64bc
+    char *preferred_mode = NULL;
64a64bc
+
64a64bc
+    /* Check for a configured preference for a particular mode */
64a64bc
+    preferred_mode = xf86GetOptValString (output->options,
64a64bc
+					  OPTION_PREFERRED_MODE);
64a64bc
+    if (preferred_mode)
64a64bc
+	return preferred_mode;
64a64bc
+
64a64bc
+    if (pScrn->display->modes && *pScrn->display->modes)
64a64bc
+	preferred_mode = *pScrn->display->modes;
64a64bc
+
64a64bc
+    return preferred_mode;
64a64bc
+}
64a64bc
+
64a64bc
 #define DEBUG_REPROBE 1
64a64bc
 
64a64bc
 void
64a64bc
@@ -1377,8 +1394,7 @@
64a64bc
 	output->probed_modes = xf86SortModes (output->probed_modes);
64a64bc
 	
64a64bc
 	/* Check for a configured preference for a particular mode */
64a64bc
-	preferred_mode = xf86GetOptValString (output->options,
64a64bc
-					      OPTION_PREFERRED_MODE);
64a64bc
+	preferred_mode = preferredMode(scrn, output);
64a64bc
 
64a64bc
 	if (preferred_mode)
64a64bc
 	{