diff options
| author | 2022-12-13 13:53:14 +0000 | |
|---|---|---|
| committer | 2022-12-13 13:53:14 +0000 | |
| commit | 19954f5fcae5cf4787c9b0b89bede29255af51b0 (patch) | |
| tree | ebb0a038f77ab6768cacb1dc64a2d4a84785febc | |
| parent | aa7f951c7b1dcc11c371df13351de245f9c4a7bc (diff) | |
| parent | edddc6be3ec83919886862189de8d6fa83cf5a46 (diff) | |
Merge "Ensure that VIRTUAL_DISPLAY_FLAG_DEVICE_DISPLAY_GROUP doesn't cause NPEs"
| -rw-r--r-- | services/core/java/com/android/server/display/DisplayManagerService.java | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java index ae84e96f4c2f..c700ccbdc0a1 100644 --- a/services/core/java/com/android/server/display/DisplayManagerService.java +++ b/services/core/java/com/android/server/display/DisplayManagerService.java @@ -1414,12 +1414,20 @@ public final class DisplayManagerService extends SystemService { // LogicalDisplayMapper aware of the link between the new display and its associated virtual // device before triggering DISPLAY_DEVICE_EVENT_ADDED. if ((flags & VIRTUAL_DISPLAY_FLAG_DEVICE_DISPLAY_GROUP) != 0) { - try { - final int virtualDeviceId = virtualDevice.getDeviceId(); - mLogicalDisplayMapper.associateDisplayDeviceWithVirtualDevice( - device, virtualDeviceId); - } catch (RemoteException e) { - e.rethrowFromSystemServer(); + if (virtualDevice != null) { + try { + final int virtualDeviceId = virtualDevice.getDeviceId(); + mLogicalDisplayMapper.associateDisplayDeviceWithVirtualDevice( + device, virtualDeviceId); + } catch (RemoteException e) { + e.rethrowFromSystemServer(); + } + } else { + Slog.i( + TAG, + "Display created with VIRTUAL_DISPLAY_FLAG_DEVICE_DISPLAY_GROUP set, but no" + + " virtual device. The display will not be added to a device display" + + " group."); } } |