Skip to content

Commit 0f1e55b

Browse files
committed
fix: Don't make edid mandatory if monitor SERIAL & CAPTION are still found
This fixes monitors inventory on Apple M1. This indeed enhances #430 fix
1 parent cf99342 commit 0f1e55b

File tree

5 files changed

+974
-43
lines changed

5 files changed

+974
-43
lines changed

Changes

+2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ inventory:
2525
* fix #630: Enhanced support for linux on Raspberry Pi 3
2626
* Fix ioreg command output parsing on MacOSX to avoid Deep Recursion perl warning
2727
* Fix software publisher analysis in software inventory on MacOSX
28+
* Enhance #430 fix: Don't make edid mandatory if monitor SERIAL & CAPTION are still
29+
found. This fixes monitors inventory on Apple M1.
2830

2931
remoteinventory:
3032
* Limit the number of attempts and reported errors when libssh2 fails but ssh command

lib/GLPI/Agent/Task/Inventory/Generic/Screen.pm

+22-19
Original file line numberDiff line numberDiff line change
@@ -330,33 +330,36 @@ sub _getScreens {
330330

331331
my %screens = ();
332332

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) :
336337
_getScreensFromUnix(%params);
337338

338339
foreach my $screen (@screens) {
339-
next unless $screen->{edid};
340+
next unless $screen->{edid} || ($screen->{SERIAL} && $screen->{CAPTION});
340341

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+
}
353355

354-
$screen->{BASE64} = encode_base64($screen->{edid});
356+
$screen->{BASE64} = encode_base64($screen->{edid});
355357

356-
delete $screen->{edid};
358+
delete $screen->{edid};
359+
}
357360

358361
# Add or merge found values
359-
my $serial = $info->{SERIAL} || $screen->{BASE64};
362+
my $serial = $screen->{SERIAL} || $screen->{BASE64};
360363
if (!exists($screens{$serial})) {
361364
$screens{$serial} = $screen ;
362365
} else {

0 commit comments

Comments
 (0)