Patch by Mike A. Harris Fix bug http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=120950 and the 200,000,000 bug duplicates. ;o) Filed upstream as: http://freedesktop.org/bugzilla/show_bug.cgi?id=1223 --- xc/programs/Xserver/hw/xfree86/parser/Monitor.c.libxf86config-do-not-comment-out-monitor-frequencies Fri May 7 04:12:31 2004 +++ xc/programs/Xserver/hw/xfree86/parser/Monitor.c Fri May 7 04:21:31 2004 @@ -671,17 +671,44 @@ fprintf (cf, "\tDisplaySize %d\t%d\n", ptr->mon_width, ptr->mon_height); +/* This causes the config file to always be written out with the + * HorizSync/VertRefresh lines commented out, forcing all default X config + * files written out by this library to rely on DDC. This is not a viable + * thing to do because there are a great number of reasons why DDC may not + * be useable, such as: + * - KVM's which do not pass DDC + * - Video drivers with no DDC support + * - DFPs, LCDs, and to a lesser extent nowadays CRTs which do not support + * DDC + * - Other hardware plugged into the monitor cable which interferes with DDC + * - Non-x86 architecture which the DDC probing code of a driver uses the + * video BIOS, but which that does not work. + * - various other scenarios + * + * Red Hat bugzilla is loaded with bugs reported from savage, radeon, nv, + * r128, and other hardware users in which this problem causes them to have + * seriously limited display resolutions because the monitor frequencies are + * not known when X starts up, forcing them into 640x480. As such, I'm + * changing this back to the way it used to be under the "if it wasn't broken, + * don't fix it" principle. I doubt we will every be able to 100% rely that + * DDC will always be available, so this will never be a reliable way to + * configure monitors. + * + * Mike A. Harris , May 7, 2004 (X.org X11 6.7.0) + */ +#if 0 if ( ptr->mon_n_hsync || ptr->mon_n_vrefresh ) fprintf(cf," ### Uncomment if you don't want to default to DDC:\n"); +#endif for (i = 0; i < ptr->mon_n_hsync; i++) { - fprintf (cf, "#\tHorizSync %2.1f - %2.1f\n", + fprintf (cf, "\tHorizSync %2.1f - %2.1f\n", ptr->mon_hsync[i].lo, ptr->mon_hsync[i].hi); } for (i = 0; i < ptr->mon_n_vrefresh; i++) { - fprintf (cf, "#\tVertRefresh %2.1f - %2.1f\n", + fprintf (cf, "\tVertRefresh %2.1f - %2.1f\n", ptr->mon_vrefresh[i].lo, ptr->mon_vrefresh[i].hi); }