From 28dc4cbba47f5290f4078dccb649cf340ae096fb Mon Sep 17 00:00:00 2001 From: Riddle Hsu Date: Thu, 24 Mar 2022 14:49:20 +0800 Subject: [PATCH] Fix NPE when adding window with policy to hide WindowState will be created with token. But it may not add to the token immediately. So at that path it should use getDisplayContent() that use token to get display. Such as addWindow -> initAppOpsState -> setAppOpVisibilityLw -> hide -> startAnimation. "win.mToken.addWindow(win)" executes after that. Bug: 226259929 Test: switch user Change-Id: Ieba9df3bca87d10cd031d25e0b7f1e9a0c311dee --- services/core/java/com/android/server/wm/WindowState.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 0ca1058a80b2a..1b0b4928d9ae5 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -5288,7 +5288,7 @@ class WindowState extends WindowContainer implements WindowManagerP if (mControllableInsetProvider != null) { return; } - if (mDisplayContent.inTransition()) { + if (getDisplayContent().inTransition()) { // Skip because the animation is usually unnoticeable (e.g. covered by rotation // animation) and the animation bounds could be inconsistent, such as depending // on when the window applies its draw transaction with new rotation.