From edddc6be3ec83919886862189de8d6fa83cf5a46 Mon Sep 17 00:00:00 2001 From: Phill Hayers Date: Fri, 9 Dec 2022 11:15:31 +0000 Subject: Ensure that VIRTUAL_DISPLAY_FLAG_DEVICE_DISPLAY_GROUP doesn't cause NPEs Test: atest WindoFocusTests against ag/20678587 Bug: 261822020 Change-Id: I6c97e441272658b0ab01f7832a12bccc1b392820 --- .../server/display/DisplayManagerService.java | 20 ++++++++++++++------ 1 file 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."); } } -- cgit v1.2.3-59-g8ed1b