Fix WM shell crash when targets belong to a different display.
When showWhenLocked activity is launched on a second display, it's possible that a window container for a wallpaper on the default display and the showWhenLocked activity on the second display are both collected for app transition. This is a workaround to prevent NPE for such cases. Bug: 260997053 Test: atest MultiDisplayLockedKeyguardTests Change-Id: I9dbd0928aa785a6d547b8e19841748280ba982c9
This commit is contained in:
@@ -1645,8 +1645,11 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
|
||||
|
||||
WindowContainer<?> ancestor = findCommonAncestor(sortedTargets, changes, topApp);
|
||||
|
||||
// make leash based on highest (z-order) direct child of ancestor with a participant.
|
||||
WindowContainer leashReference = sortedTargets.get(0);
|
||||
// Make leash based on highest (z-order) direct child of ancestor with a participant.
|
||||
// TODO(b/261418859): Handle the case when the target contains window containers which
|
||||
// belong to a different display. As a workaround we use topApp, from which wallpaper
|
||||
// window container is removed, instead of sortedTargets here.
|
||||
WindowContainer leashReference = topApp;
|
||||
while (leashReference.getParent() != ancestor) {
|
||||
leashReference = leashReference.getParent();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user