From 18646d586055ad8b27c470c7e52829625ed92225 Mon Sep 17 00:00:00 2001 From: Shen Lin Date: Wed, 9 Nov 2022 17:16:12 +0800 Subject: [PATCH] Fix potential crash when exit splash screen - Make sure mDecorView is attached before calling its WindowInsetsController. - Amend modifier declare sequence for a better code style. Bug: 258270145 Bug: 256766422 Test: atest SplashscreenTests StartingSurfaceDrawerTests Change-Id: I4d3b184252ed9516827812adfa0c76e07a6527e7 Merged-In: I4d3b184252ed9516827812adfa0c76e07a6527e7 --- .../wm/shell/startingsurface/StartingSurfaceDrawer.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java index 053491e3a3ab5..22e804547d5c6 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java @@ -430,7 +430,8 @@ public class StartingSurfaceDrawer { } @Override - public @Nullable SplashScreenView get() { + @Nullable + public SplashScreenView get() { synchronized (this) { while (!mIsViewSet) { try { @@ -691,7 +692,7 @@ public class StartingSurfaceDrawer { private final TaskSnapshotWindow mTaskSnapshotWindow; private SplashScreenView mContentView; private boolean mSetSplashScreen; - private @StartingWindowType int mSuggestType; + @StartingWindowType private int mSuggestType; private int mBGColor; private final long mCreateTime; private int mSystemBarAppearance; @@ -732,7 +733,7 @@ public class StartingSurfaceDrawer { // Reset the system bar color which set by splash screen, make it align to the app. private void clearSystemBarColor() { - if (mDecorView == null) { + if (mDecorView == null || !mDecorView.isAttachedToWindow()) { return; } if (mDecorView.getLayoutParams() instanceof WindowManager.LayoutParams) {