OSDN Git Service

Fixed NPE during boot animation on fugu.
authorWale Ogunwale <ogunwale@google.com>
Fri, 22 Apr 2016 19:11:51 +0000 (12:11 -0700)
committerWale Ogunwale <ogunwale@google.com>
Fri, 22 Apr 2016 19:44:34 +0000 (12:44 -0700)
- 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

services/core/java/com/android/server/wm/DockedStackDividerController.java
services/core/java/com/android/server/wm/WindowLayersController.java

index 30ba28a..8174c13 100644 (file)
@@ -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;
index 8608967..9e1f94e 100644 (file)
@@ -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) {