From 3e367473f5b36426d753645ec945ac8c3e7be13e Mon Sep 17 00:00:00 2001 From: Anssi Hannula Date: Sun, 3 Jan 2010 09:59:29 +0000 Subject: monitor-edid, monitor-get-edid: - do not get duplicate EDIDs if the same EDID is available via multiple methods - allow retrieval of multiple EDIDs via VBE --- monitor-edid | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'monitor-edid') diff --git a/monitor-edid b/monitor-edid index d1e7d61..bca967b 100755 --- a/monitor-edid +++ b/monitor-edid @@ -78,9 +78,10 @@ sub parse_edid() { sub get_edids { my ($b_get_first) = @_; + my %seen = (); my @l = map { my $s = slurp($_); - is_edid_possibly_valid($s) ? [ $_ => $s ] : (); + (is_edid_possibly_valid($s) && !$seen{ $_[1] }++) ? [ $_ => $s ] : (); } get_edid_files(); if (!@l || !$b_get_first && $< == 0) { @@ -90,19 +91,17 @@ sub get_edids { foreach my $port ($min_port .. $max_port) { warn "probing EDID using VBE (port $port)\n" if $opt{verbose}; my $edid = `$cmd --port $port`; - is_edid_possibly_valid($edid) or next; - - if (grep { $_->[1] eq $edid } @l) { - # already found, forget it - } else { - push @l, [ vbe => $edid ]; + if ($? >> 8 == 2) { + warn "VBE info call failed, skipping all ports\n" if $opt{verbose}; last; } + is_edid_possibly_valid($edid) or next; + + next if grep { $_->[1] eq $edid } @l; + push @l, [ "vbe$port" => $edid ]; } } } - my %seen = (); - @l = grep { !$seen{ $_[1] }++ } @l; @l; } -- cgit v1.2.1