Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cd8958e6 authored by Issei Suzuki's avatar Issei Suzuki
Browse files

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
parent 2b46e467
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -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();
        }