@@ -330,33 +330,36 @@ sub _getScreens {
330
330
331
331
my %screens = ();
332
332
333
- my @screens =
334
- OSNAME eq ' MSWin32' ? _getScreensFromWindows(%params ) :
335
- OSNAME eq ' darwin' ? _getScreensFromMacOS(%params ) :
333
+ # $params{screens} can only be set during tests
334
+ my @screens = $params {screens } ? @{$params {screens }} :
335
+ OSNAME eq ' MSWin32' ? _getScreensFromWindows(%params ) :
336
+ OSNAME eq ' darwin' ? _getScreensFromMacOS(%params ) :
336
337
_getScreensFromUnix(%params );
337
338
338
339
foreach my $screen (@screens ) {
339
- next unless $screen -> {edid };
340
+ next unless $screen -> {edid } || ( $screen -> { SERIAL } && $screen -> { CAPTION }) ;
340
341
341
- my $info = _getEdidInfo(
342
- edid => $screen -> {edid },
343
- logger => $params {logger },
344
- datadir => $params {datadir },
345
- );
346
- if ($info ) {
347
- $screen -> {CAPTION } = $info -> {CAPTION };
348
- $screen -> {DESCRIPTION } = $info -> {DESCRIPTION };
349
- $screen -> {MANUFACTURER } = $info -> {MANUFACTURER };
350
- $screen -> {SERIAL } = $info -> {SERIAL };
351
- $screen -> {ALTSERIAL } = $info -> {ALTSERIAL } if $info -> {ALTSERIAL };
352
- }
342
+ if ($screen -> {edid }) {
343
+ my $info = _getEdidInfo(
344
+ edid => $screen -> {edid },
345
+ logger => $params {logger },
346
+ datadir => $params {datadir },
347
+ );
348
+ if ($info ) {
349
+ $screen -> {CAPTION } = $info -> {CAPTION };
350
+ $screen -> {DESCRIPTION } = $info -> {DESCRIPTION };
351
+ $screen -> {MANUFACTURER } = $info -> {MANUFACTURER };
352
+ $screen -> {SERIAL } = $info -> {SERIAL };
353
+ $screen -> {ALTSERIAL } = $info -> {ALTSERIAL } if $info -> {ALTSERIAL };
354
+ }
353
355
354
- $screen -> {BASE64 } = encode_base64($screen -> {edid });
356
+ $screen -> {BASE64 } = encode_base64($screen -> {edid });
355
357
356
- delete $screen -> {edid };
358
+ delete $screen -> {edid };
359
+ }
357
360
358
361
# Add or merge found values
359
- my $serial = $info -> {SERIAL } || $screen -> {BASE64 };
362
+ my $serial = $screen -> {SERIAL } || $screen -> {BASE64 };
360
363
if (!exists ($screens {$serial })) {
361
364
$screens {$serial } = $screen ;
362
365
} else {
0 commit comments