aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS2
-rwxr-xr-xmonitor-parse-edid7
2 files changed, 6 insertions, 3 deletions
diff --git a/NEWS b/NEWS
index c05bd7b..a0bdb11 100644
--- a/NEWS
+++ b/NEWS
@@ -32,6 +32,8 @@
o add comment "Monitor preferred modeline" only for the modeline the
monitor reports as preferred, and add "Monitor supported modeline"
comment for the other modelines
+ o allow null manufacturer name, instead check that EDID version is 1.x
+ or 2.x (see Mandriva bug #28857)
- monitor-edid, monitor-get-edid:
o do not get duplicate EDIDs if the same EDID is available via
diff --git a/monitor-parse-edid b/monitor-parse-edid
index b95dd1f..9acbd9b 100755
--- a/monitor-parse-edid
+++ b/monitor-parse-edid
@@ -261,8 +261,8 @@ sub get_many_bits {
sub check_parsed_edid {
my ($edid) = @_;
- $edid->{manufacturer_name} ne '@@@' or return 'bad manufacturer_name';
- $edid->{edid_version} != 0xff && $edid->{edid_revision} != 0xff or return 'bad edid_version';
+ $edid->{edid_version} >= 1 && $edid->{edid_version} <= 2 or return 'bad edid_version';
+ $edid->{edid_revision} != 0xff or return 'bad edid_revision';
if ($edid->{monitor_range}) {
$edid->{monitor_range}{horizontal_min} &&
@@ -327,6 +327,7 @@ sub parse_edid {
} elsif ($field eq 'manufacturer_name') {
my $h = get_many_bits($v, 'manufacturer_name');
$v = join('', map { chr(ord('A') + $h->{$_} - 1) } 1 .. 3);
+ $v = "" if $v eq "@@@";
} elsif ($field eq 'video_input_definition') {
$v = get_many_bits($v, 'video_input_definition');
} elsif ($field eq 'feature_support') {
@@ -454,7 +455,7 @@ sub parse_edid {
}
$edid{max_size_precision} = 'cm';
- $edid{EISA_ID} = $edid{manufacturer_name} . sprintf('%04x', $edid{product_code}) if $edid{product_code};
+ $edid{EISA_ID} = $edid{manufacturer_name} . sprintf('%04x', $edid{product_code}) if $edid{product_code} && $edid{manufacturer_name};
if ($edid{monitor_range}) {
$edid{HorizSync} = $edid{monitor_range}{horizontal_min} . '-' . $edid{monitor_range}{horizontal_max};