diff options
author | Pascal Rigaux <pixel@mandriva.com> | 2008-03-13 08:46:45 +0000 |
---|---|---|
committer | Pascal Rigaux <pixel@mandriva.com> | 2008-03-13 08:46:45 +0000 |
commit | 279dba29f9415e197cbeec2c5b98c0cb39a303bd (patch) | |
tree | 37e3f284209603017576e8d5591c33c0727aea63 | |
parent | 1d5c3d410796bbec065774939bf39920ce1cebaf (diff) | |
download | drakx-kbd-mouse-x11-279dba29f9415e197cbeec2c5b98c0cb39a303bd.tar drakx-kbd-mouse-x11-279dba29f9415e197cbeec2c5b98c0cb39a303bd.tar.gz drakx-kbd-mouse-x11-279dba29f9415e197cbeec2c5b98c0cb39a303bd.tar.bz2 drakx-kbd-mouse-x11-279dba29f9415e197cbeec2c5b98c0cb39a303bd.tar.xz drakx-kbd-mouse-x11-279dba29f9415e197cbeec2c5b98c0cb39a303bd.zip |
o if the EDID gives a valid EISA_ID, a valid 16/10 preferred resolution, but
no HorizSync/VertRefresh, use a generic flat panel HorizSync/VertRefresh
(needed for edid.lcd.Elonex-PR600)
(backport from HEAD)
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | lib/Xconfig/monitor.pm | 18 |
2 files changed, 17 insertions, 4 deletions
@@ -1,5 +1,8 @@ - XFdrake: o never write a ModeLine when using fglrx driver (#30934) + o if the EDID gives a valid EISA_ID, a valid 16/10 preferred resolution, but + no HorizSync/VertRefresh, use a generic flat panel HorizSync/VertRefresh + (needed for edid.lcd.Elonex-PR600) Version 0.37.1 - 2 December 2007, by Anssi Hannula diff --git a/lib/Xconfig/monitor.pm b/lib/Xconfig/monitor.pm index 38793da..51b3290 100644 --- a/lib/Xconfig/monitor.pm +++ b/lib/Xconfig/monitor.pm @@ -164,8 +164,14 @@ sub configure_automatic { add2hash($monitor, $mon); log::l("EISA_ID corresponds to: $monitor->{ModelName}"); } elsif (!$monitor->{HorizSync} || !$monitor->{VertRefresh}) { - log::l("unknown EISA_ID and partial DDC probe, so unknown monitor"); - delete @$monitor{'VendorName', 'ModelName', 'EISA_ID'}; + if ($monitor->{preferred_resolution} + && Xconfig::xfree::resolution2ratio($monitor->{preferred_resolution}) eq '16/10') { + log::l("no HorizSync nor VertRefresh, using preferred resolution (hopefully this is a flat panel)"); + add2hash($monitor, generic_flat_panel($monitor->{preferred_resolution})); + } else { + log::l("unknown EISA_ID and partial DDC probe, so unknown monitor"); + delete @$monitor{'VendorName', 'ModelName', 'EISA_ID'}; + } } } elsif ($monitor->{VendorName}) { if (my $mon = find { $_->{VendorName} eq $monitor->{VendorName} && $_->{ModelName} eq $monitor->{ModelName} } monitors_db()) { @@ -271,7 +277,7 @@ sub probe_using_X { $resolution = eval($resolution) or return; if (my $res = $resolution->[0]{preferred_resolution}) { - generic_flat_panel_($res->{X}, $res->{Y}); + generic_flat_panel($res); } else { log::l("at least one EDID was found in Xorg.log, so let Xorg autodetect the monitor"); { VendorName => "Plug'n Play" }; @@ -280,11 +286,15 @@ sub probe_using_X { sub probe_DMI() { my $res = detect_devices::probe_unique_name('Resolution'); - $res && generic_flat_panel($res); + $res && generic_flat_panel_txt($res); } sub generic_flat_panel { my ($resolution) = @_; + generic_flat_panel_($resolution->{X}, $resolution->{Y}); +} +sub generic_flat_panel_txt { + my ($resolution) = @_; my ($X, $Y) = $resolution =~ /(\d+)x(\d+)/ or log::l("bad resolution $resolution"), return; generic_flat_panel_($X, $Y); } |