diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityRecord.java | 10 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowManagerService.java | 2 |
2 files changed, 8 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index bdab4d483872..b70fa8ff7596 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -2887,7 +2887,6 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A } final StartingSurfaceController.StartingSurface surface; - final WindowState startingWindow = mStartingWindow; final boolean animate; if (mStartingData != null) { if (mStartingData.mWaitForSyncTransactionCommit @@ -4545,7 +4544,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A mTransitionChangeFlags |= FLAG_STARTING_WINDOW_TRANSFER_RECIPIENT; } // Post cleanup after the visibility and animation are transferred. - fromActivity.postWindowRemoveStartingWindowCleanup(); + fromActivity.postWindowRemoveStartingWindowCleanup(tStartingWindow); fromActivity.mVisibleSetFromTransferredStartingWindow = false; mWmService.updateFocusedWindowLocked( @@ -7461,7 +7460,12 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A } } - void postWindowRemoveStartingWindowCleanup() { + void postWindowRemoveStartingWindowCleanup(@NonNull WindowState win) { + if (mStartingWindow == win) { + // This could only happen when the window is removed from hierarchy. So do not keep its + // reference anymore. + mStartingWindow = null; + } if (mChildren.size() == 0 && mVisibleSetFromTransferredStartingWindow) { // We set the visible state to true for the token from a transferred starting // window. We now reset it back to false since the starting window was the last diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index a90e08e4f372..6623d02e96a5 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -2020,7 +2020,7 @@ public class WindowManagerService extends IWindowManager.Stub } if (win.mActivityRecord != null) { - win.mActivityRecord.postWindowRemoveStartingWindowCleanup(); + win.mActivityRecord.postWindowRemoveStartingWindowCleanup(win); } if (win.mAttrs.type == TYPE_WALLPAPER) { |