diff --git a/src/i830_sdvo.c b/src/i830_sdvo.c index 4b04994..77495ae 100644 --- a/src/i830_sdvo.c +++ b/src/i830_sdvo.c @@ -1100,8 +1100,9 @@ i830_sdvo_get_modes(xf86OutputPtr output) { ScrnInfoPtr pScrn = output->scrn; xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); - DisplayModePtr modes; + DisplayModePtr modes = NULL; xf86OutputPtr crt; + xf86MonPtr edid_mon = NULL; modes = i830_ddc_get_modes(output); if (modes != NULL) @@ -1114,10 +1115,16 @@ i830_sdvo_get_modes(xf86OutputPtr output) */ crt = xf86_config->output[0]; if (crt->funcs->detect(crt) == XF86OutputStatusDisconnected) { - return crt->funcs->get_modes(crt); + I830OutputPrivatePtr intel_output = crt->driver_private; + + edid_mon = xf86OutputGetEDID(crt, intel_output->pDDCBus); + } + if (edid_mon) { + xf86OutputSetEDID(output, edid_mon); + modes = xf86OutputGetEDIDModes(output); } - return NULL; + return modes; } static void