From 20ec11b4e61e5fffd639034f936ed5ef8359d414 Mon Sep 17 00:00:00 2001 From: Wale Ogunwale Date: Fri, 22 Apr 2016 12:11:51 -0700 Subject: [PATCH] Fixed NPE during boot animation on fugu. - Don't set a dim layer in the docked controller if we are not dimming. - Check to make sure the docked divider window isn't null before trying to use its layer for dimming. Bug: 28339915 Change-Id: I33d49d26ffcaec63d135f82a6208e127ba0f0570 --- .../java/com/android/server/wm/DockedStackDividerController.java | 5 ++++- services/core/java/com/android/server/wm/WindowLayersController.java | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/wm/DockedStackDividerController.java b/services/core/java/com/android/server/wm/DockedStackDividerController.java index 30ba28a21995..8174c139cf64 100644 --- a/services/core/java/com/android/server/wm/DockedStackDividerController.java +++ b/services/core/java/com/android/server/wm/DockedStackDividerController.java @@ -538,12 +538,15 @@ public class DockedStackDividerController implements DimLayerUser { } public boolean animate(long now) { + if (mWindow == null) { + return false; + } if (mAnimatingForMinimizedDockedStack) { return animateForMinimizedDockedStack(now); } else if (mAnimatingForIme) { return animateForIme(now); } else { - if (mDimLayer != null) { + if (mDimLayer != null && mDimLayer.isDimming()) { mDimLayer.setLayer(mService.mLayersController.getResizeDimLayer()); } return false; diff --git a/services/core/java/com/android/server/wm/WindowLayersController.java b/services/core/java/com/android/server/wm/WindowLayersController.java index 8608967667a8..9e1f94e5ec70 100644 --- a/services/core/java/com/android/server/wm/WindowLayersController.java +++ b/services/core/java/com/android/server/wm/WindowLayersController.java @@ -27,6 +27,7 @@ import static android.app.ActivityManager.StackId.PINNED_STACK_ID; import static android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYERS; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; +import static com.android.server.wm.WindowManagerService.LAYER_OFFSET_DIM; import static com.android.server.wm.WindowManagerService.WINDOW_LAYER_MULTIPLIER; /** @@ -150,7 +151,7 @@ public class WindowLayersController { * above all application surfaces. */ int getResizeDimLayer() { - return mDockDivider.mLayer - 1; + return (mDockDivider != null) ? mDockDivider.mLayer - 1 : LAYER_OFFSET_DIM; } private void logDebugLayers(WindowList windows) { -- 2.11.0