summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/java/com/android/server/wm/DimLayer.java11
-rw-r--r--services/java/com/android/server/wm/WindowAnimator.java8
2 files changed, 17 insertions, 2 deletions
diff --git a/services/java/com/android/server/wm/DimLayer.java b/services/java/com/android/server/wm/DimLayer.java
index 4c7add96ac8a..88efe2e21af9 100644
--- a/services/java/com/android/server/wm/DimLayer.java
+++ b/services/java/com/android/server/wm/DimLayer.java
@@ -84,6 +84,17 @@ public class DimLayer {
return mTargetAlpha;
}
+ void setLayer(int layer) {
+ if (mLayer != layer) {
+ mLayer = layer;
+ mDimSurface.setLayer(layer);
+ }
+ }
+
+ int getLayer() {
+ return mLayer;
+ }
+
private void setAlpha(float alpha) {
if (mAlpha != alpha) {
if (DEBUG) Slog.v(TAG, "setAlpha alpha=" + alpha);
diff --git a/services/java/com/android/server/wm/WindowAnimator.java b/services/java/com/android/server/wm/WindowAnimator.java
index d5144fb616ff..d42221e4f087 100644
--- a/services/java/com/android/server/wm/WindowAnimator.java
+++ b/services/java/com/android/server/wm/WindowAnimator.java
@@ -573,10 +573,13 @@ public class WindowAnimator {
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 @@ public class WindowAnimator {
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()) {