Make DimLayer track changes to WindowState layer.

The DimLayer behind popups was not changing when the popup layer
changed. It will now.

Fixes bug 7974415.

Change-Id: Ia486efa83d623716a09d73a22493a4222823c573
diff --git a/services/java/com/android/server/wm/WindowAnimator.java b/services/java/com/android/server/wm/WindowAnimator.java
index d5144fb..d42221e 100644
--- a/services/java/com/android/server/wm/WindowAnimator.java
+++ b/services/java/com/android/server/wm/WindowAnimator.java
@@ -573,10 +573,13 @@
 
                 final DimLayer dimAnimator = displayAnimator.mDimAnimator;
                 final WindowStateAnimator winAnimator = displayAnimator.mDimWinAnimator;
+                final int dimLayer;
                 final float dimAmount;
                 if (winAnimator == null) {
+                    dimLayer = dimAnimator.getLayer();
                     dimAmount = 0;
                 } else {
+                    dimLayer = winAnimator.mAnimLayer - WindowManagerService.LAYER_OFFSET_DIM;
                     dimAmount = winAnimator.mWin.mAttrs.dimAmount;
                 }
                 final float targetAlpha = dimAnimator.getTargetAlpha();
@@ -590,9 +593,10 @@
                         if (targetAlpha > dimAmount) {
                             duration = getDimBehindFadeDuration(duration);
                         }
-                        dimAnimator.show(winAnimator.mAnimLayer -
-                                WindowManagerService.LAYER_OFFSET_DIM, dimAmount, duration);
+                        dimAnimator.show(dimLayer, dimAmount, duration);
                     }
+                } else if (dimAnimator.getLayer() != dimLayer) {
+                    dimAnimator.setLayer(dimLayer);
                 }
                 if (dimAnimator.isAnimating()) {
                     if (!mService.okToDisplay()) {