--- a/hw/xfree86/modes/xf86Crtc.c +++ b/hw/xfree86/modes/xf86Crtc.c @@ -1239,7 +1239,7 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY) { xf86OutputPtr output = config->output[o]; DisplayModePtr mode; - DisplayModePtr config_modes = NULL, output_modes, default_modes; + DisplayModePtr config_modes = NULL, output_modes = NULL, default_modes = NULL; char *preferred_mode; xf86MonPtr edid_monitor; XF86ConfMonitorPtr conf_monitor; @@ -1288,7 +1288,9 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY) config_modes = xf86GetMonitorModes (scrn, conf_monitor); } - output_modes = (*output->funcs->get_modes) (output); + if (!conf_monitor || + xf86SetBoolOption (conf_monitor->mon_option_lst, "UseDdcModes", TRUE)) + output_modes = (*output->funcs->get_modes) (output); edid_monitor = output->MonInfo; @@ -1349,8 +1351,10 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY) mon_rec.vrefresh[0].hi = 62.0; mon_rec.nVrefresh = 1; } - default_modes = xf86GetDefaultModes (output->interlaceAllowed, - output->doubleScanAllowed); + if (!conf_monitor || + xf86SetBoolOption (conf_monitor->mon_option_lst, "UseDefaultModes", TRUE)) + default_modes = xf86GetDefaultModes (output->interlaceAllowed, + output->doubleScanAllowed); if (sync_source == sync_config) {