xfree86: If the driver found modes on an output, don't add more

Inferring modes from sync ranges is only valid if the monitor says it's
valid.  If the monitor says it's valid, then we'll have already added
those modes during EDID block parse.  If it doesn't, then we should
believe it.

If there's no EDID for an output, but sync ranges from the config, we'll
still add default modes as normal.

Reviewed-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
Adam Jackson 2010-02-08 15:23:04 -05:00
parent 303977fbcf
commit dc498b433f

View File

@ -1595,7 +1595,7 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
int min_clock = 0;
int max_clock = 0;
double clock;
Bool add_default_modes = xf86ReturnOptValBool(output->options, OPTION_DEFAULT_MODES, TRUE);
Bool add_default_modes;
Bool debug_modes = config->debug_modes ||
xf86Initialising;
enum det_monrec_source sync_source = sync_default;
@ -1641,6 +1641,14 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
}
output_modes = (*output->funcs->get_modes) (output);
/*
* If the user has a preference, respect it.
* Otherwise, don't second-guess the driver.
*/
if (!xf86GetOptValBool(output->options, OPTION_DEFAULT_MODES,
&add_default_modes))
add_default_modes = (output_modes == NULL);
edid_monitor = output->MonInfo;