Prune default modes to EDID clock limit.

Pick out the EDID max clock value and use that to elide default modes which
are too fast.
This commit is contained in:
Keith Packard 2006-12-30 22:47:58 -08:00
parent c70e7bc701
commit 2330b341c9
1 changed files with 10 additions and 0 deletions

View File

@ -546,6 +546,8 @@ xf86ProbeOutputModes (ScrnInfoPtr pScrn)
XF86ConfMonitorPtr conf_monitor;
xf86MonPtr edid_monitor;
MonRec mon_rec;
int min_clock = 0;
int max_clock = 0;
enum { sync_config, sync_edid, sync_default } sync_source = sync_default;
while (output->probed_modes != NULL)
@ -615,6 +617,8 @@ xf86ProbeOutputModes (ScrnInfoPtr pScrn)
if (sync_source == sync_default)
sync_source = sync_edid;
}
if (ranges->max_clock > max_clock)
max_clock = ranges->max_clock;
}
}
}
@ -650,6 +654,12 @@ xf86ProbeOutputModes (ScrnInfoPtr pScrn)
* Check default modes against sync range
*/
i830xf86ValidateModesSync (pScrn, default_modes, &mon_rec);
/*
* Check default modes against monitor max clock
*/
if (max_clock)
i830xf86ValidateModesClocks(pScrn, default_modes,
&min_clock, &max_clock, 1);
output->probed_modes = NULL;
output->probed_modes = xf86ModesAdd (output->probed_modes, config_modes);