aboutsummaryrefslogtreecommitdiffstats
path: root/monitor-edid
diff options
context:
space:
mode:
Diffstat (limited to 'monitor-edid')
-rwxr-xr-xmonitor-edid17
1 files changed, 8 insertions, 9 deletions
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;
}