diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/DimLayerController.java | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/DimLayerController.java b/services/core/java/com/android/server/wm/DimLayerController.java index 410044633215..d44cd13f8ed5 100644 --- a/services/core/java/com/android/server/wm/DimLayerController.java +++ b/services/core/java/com/android/server/wm/DimLayerController.java @@ -188,6 +188,7 @@ class DimLayerController { boolean animateDimLayers() { int fullScreen = -1; int fullScreenAndDimming = -1; + int topFullScreenUserLayer = 0; boolean result = false; for (int i = mState.size() - 1; i >= 0; i--) { @@ -213,8 +214,18 @@ class DimLayerController { // and we have to make sure we always animate the layer. if (user.dimFullscreen() && state.dimLayer == mSharedFullScreenDimLayer) { fullScreen = i; - if (mState.valueAt(i).continueDimming) { + if (!state.continueDimming) { + continue; + } + + // When choosing which user to assign the shared fullscreen layer to + // we need to look at Z-order. + if (topFullScreenUserLayer == 0 || + (state.animator != null && state.animator.mAnimLayer > topFullScreenUserLayer)) { fullScreenAndDimming = i; + if (state.animator != null) { + topFullScreenUserLayer = state.animator.mAnimLayer; + } } } else { // We always want to animate the non fullscreen windows, they don't share their |