Blob Blame History Raw
diff -up xf86-video-intel-20100319/src/drmmode_display.c.jx xf86-video-intel-20100319/src/drmmode_display.c
--- xf86-video-intel-20100319/src/drmmode_display.c.jx	2010-03-22 13:24:13.483183499 -0400
+++ xf86-video-intel-20100319/src/drmmode_display.c	2010-03-22 13:25:59.810184060 -0400
@@ -1452,7 +1452,7 @@ Bool drmmode_pre_init(ScrnInfoPtr scrn, 
 	intel_screen_private *intel = intel_get_screen_private(scrn);
 	struct drm_i915_getparam gp;
 	drmmode_ptr drmmode;
-	unsigned int i;
+	unsigned int i, lvds = -1;
 	int has_flipping = 0;
 
 	drmmode = xnfalloc(sizeof *drmmode);
@@ -1473,9 +1473,22 @@ Bool drmmode_pre_init(ScrnInfoPtr scrn, 
 			     drmmode->mode_res->max_height);
 	for (i = 0; i < drmmode->mode_res->count_crtcs; i++)
 		drmmode_crtc_init(scrn, drmmode, i);
+ 
+        /* do LVDS first */
+        for (i = 0; i < drmmode->mode_res->count_connectors; i++) {
+                drmModeConnectorPtr koutput =
+                    drmModeGetConnector(drmmode->fd,
+                                        drmmode->mode_res->connectors[i]);
+                if (koutput->connector_type == DRM_MODE_CONNECTOR_LVDS) {
+                        drmmode_output_init(scrn, drmmode, i);
+                        lvds = i;
+                }
+                drmModeFreeConnector(koutput);
+        }
 
 	for (i = 0; i < drmmode->mode_res->count_connectors; i++)
-		drmmode_output_init(scrn, drmmode, i);
+                if (i != lvds)
+		        drmmode_output_init(scrn, drmmode, i);
 
 	xf86InitialConfiguration(scrn, TRUE);