Index: xserver-xorg-video-intel-2.4.0/src/i830_crt.c =================================================================== --- xserver-xorg-video-intel-2.4.0.orig/src/i830_crt.c 2008-07-23 02:14:09.000000000 -0400 +++ xserver-xorg-video-intel-2.4.0/src/i830_crt.c 2008-08-21 10:45:52.000000000 -0400 @@ -352,10 +352,9 @@ xf86OutputStatus status; Bool connected; - crtc = i830GetLoadDetectPipe (output, NULL, &dpms_mode); - if (!crtc) - return XF86OutputStatusUnknown; - + /* + * Try hotplug detection where supported + */ if (IS_I945G(pI830) || IS_I945GM(pI830) || IS_I965G(pI830) || IS_G33CLASS(pI830)) { if (i830_crt_detect_hotplug(output)) @@ -363,12 +362,19 @@ else status = XF86OutputStatusDisconnected; - goto out; + goto done; } + /* + * DDC is next best, no flicker + */ + crtc = i830GetLoadDetectPipe (output, NULL, &dpms_mode); + if (!crtc) + return XF86OutputStatusUnknown; + if (i830_crt_detect_ddc(output)) { status = XF86OutputStatusConnected; - goto out; + goto out_release_pipe; } /* Use the load-detect method if we have no other way of telling. */ @@ -378,9 +384,10 @@ else status = XF86OutputStatusDisconnected; -out: +out_release_pipe: i830ReleaseLoadDetectPipe (output, dpms_mode); +done: return status; }