Merge "Prevent deadlock when releasing VirtualDisplays" into tm-dev am: 1187757cf2
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17658628 Change-Id: I168e64131c95a30373916825617f69803873280b Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -1440,16 +1440,6 @@ public final class DisplayManagerService extends SystemService {
|
||||
DisplayDevice device =
|
||||
mVirtualDisplayAdapter.releaseVirtualDisplayLocked(appToken);
|
||||
if (device != null) {
|
||||
final LogicalDisplay display = mLogicalDisplayMapper.getDisplayLocked(device);
|
||||
if (display != null) {
|
||||
final int displayId = display.getDisplayIdLocked();
|
||||
if (mDisplayWindowPolicyControllers.contains(displayId)) {
|
||||
Pair<IVirtualDevice, DisplayWindowPolicyController> pair =
|
||||
mDisplayWindowPolicyControllers.removeReturnOld(displayId);
|
||||
getLocalService(VirtualDeviceManagerInternal.class)
|
||||
.onVirtualDisplayRemoved(pair.first, displayId);
|
||||
}
|
||||
}
|
||||
// TODO: multi-display - handle virtual displays the same as other display adapters.
|
||||
mDisplayDeviceRepo.onDisplayDeviceEvent(device,
|
||||
DisplayAdapter.DISPLAY_DEVICE_EVENT_REMOVED);
|
||||
@@ -1609,6 +1599,17 @@ public final class DisplayManagerService extends SystemService {
|
||||
DisplayManagerGlobal.invalidateLocalDisplayInfoCaches();
|
||||
sendDisplayEventLocked(displayId, DisplayManagerGlobal.EVENT_DISPLAY_REMOVED);
|
||||
scheduleTraversalLocked(false);
|
||||
|
||||
if (mDisplayWindowPolicyControllers.contains(displayId)) {
|
||||
final IVirtualDevice virtualDevice = mDisplayWindowPolicyControllers.removeReturnOld(
|
||||
displayId).first;
|
||||
if (virtualDevice != null) {
|
||||
mHandler.post(() -> {
|
||||
getLocalService(VirtualDeviceManagerInternal.class)
|
||||
.onVirtualDisplayRemoved(virtualDevice, displayId);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void handleLogicalDisplaySwappedLocked(@NonNull LogicalDisplay display) {
|
||||
|
||||
Reference in New Issue
Block a user