Merge "Update DimAnimator layer when its window changes." into jb-dev

This commit is contained in:
Craig Mautner
2012-05-10 11:30:53 -07:00
committed by Android (Google) Code Review
2 changed files with 28 additions and 9 deletions

View File

@@ -551,6 +551,10 @@ public class WindowAnimator {
return mDimParams != null; return mDimParams != null;
} }
boolean isDimming(final WindowStateAnimator winAnimator) {
return mDimParams != null && mDimParams.mDimWinAnimator == winAnimator;
}
public void dump(PrintWriter pw, String prefix, boolean dumpAll) { public void dump(PrintWriter pw, String prefix, boolean dumpAll) {
if (mWindowDetachedWallpaper != null) { if (mWindowDetachedWallpaper != null) {
pw.print(" mWindowDetachedWallpaper="); pw.println(mWindowDetachedWallpaper); pw.print(" mWindowDetachedWallpaper="); pw.println(mWindowDetachedWallpaper);

View File

@@ -7542,7 +7542,10 @@ public class WindowManagerService extends IWindowManager.Stub
} }
for (i=0; i<N; i++) { for (i=0; i<N; i++) {
WindowState w = mWindows.get(i); final WindowState w = mWindows.get(i);
final WindowStateAnimator winAnimator = w.mWinAnimator;
boolean layerChanged = false;
int oldLayer = w.mLayer;
if (w.mBaseLayer == curBaseLayer || w.mIsImWindow if (w.mBaseLayer == curBaseLayer || w.mIsImWindow
|| (i > 0 && w.mIsWallpaper)) { || (i > 0 && w.mIsWallpaper)) {
curLayer += WINDOW_LAYER_MULTIPLIER; curLayer += WINDOW_LAYER_MULTIPLIER;
@@ -7551,22 +7554,33 @@ public class WindowManagerService extends IWindowManager.Stub
curBaseLayer = curLayer = w.mBaseLayer; curBaseLayer = curLayer = w.mBaseLayer;
w.mLayer = curLayer; w.mLayer = curLayer;
} }
if (w.mLayer != oldLayer) {
layerChanged = true;
}
oldLayer = winAnimator.mAnimLayer;
if (w.mTargetAppToken != null) { if (w.mTargetAppToken != null) {
w.mWinAnimator.mAnimLayer = winAnimator.mAnimLayer =
w.mLayer + w.mTargetAppToken.mAppAnimator.animLayerAdjustment; w.mLayer + w.mTargetAppToken.mAppAnimator.animLayerAdjustment;
} else if (w.mAppToken != null) { } else if (w.mAppToken != null) {
w.mWinAnimator.mAnimLayer = winAnimator.mAnimLayer =
w.mLayer + w.mAppToken.mAppAnimator.animLayerAdjustment; w.mLayer + w.mAppToken.mAppAnimator.animLayerAdjustment;
} else { } else {
w.mWinAnimator.mAnimLayer = w.mLayer; winAnimator.mAnimLayer = w.mLayer;
} }
if (w.mIsImWindow) { if (w.mIsImWindow) {
w.mWinAnimator.mAnimLayer += mInputMethodAnimLayerAdjustment; winAnimator.mAnimLayer += mInputMethodAnimLayerAdjustment;
} else if (w.mIsWallpaper) { } else if (w.mIsWallpaper) {
w.mWinAnimator.mAnimLayer += mWallpaperAnimLayerAdjustment; winAnimator.mAnimLayer += mWallpaperAnimLayerAdjustment;
}
if (winAnimator.mAnimLayer != oldLayer) {
layerChanged = true;
}
if (layerChanged && mAnimator.isDimming(winAnimator)) {
// Force an animation pass just to update the mDimAnimator layer.
scheduleAnimationLocked();
} }
if (DEBUG_LAYERS) Slog.v(TAG, "Assign layer " + w + ": " if (DEBUG_LAYERS) Slog.v(TAG, "Assign layer " + w + ": "
+ w.mWinAnimator.mAnimLayer); + winAnimator.mAnimLayer);
//System.out.println( //System.out.println(
// "Assigned layer " + curLayer + " to " + w.mClient.asBinder()); // "Assigned layer " + curLayer + " to " + w.mClient.asBinder());
} }
@@ -8270,7 +8284,8 @@ public class WindowManagerService extends IWindowManager.Stub
if (!mInnerFields.mDimming) { if (!mInnerFields.mDimming) {
//Slog.i(TAG, "DIM BEHIND: " + w); //Slog.i(TAG, "DIM BEHIND: " + w);
mInnerFields.mDimming = true; mInnerFields.mDimming = true;
if (!mAnimator.isDimming()) { final WindowStateAnimator winAnimator = w.mWinAnimator;
if (!mAnimator.isDimming(winAnimator)) {
final int width, height; final int width, height;
if (attrs.type == WindowManager.LayoutParams.TYPE_BOOT_PROGRESS) { if (attrs.type == WindowManager.LayoutParams.TYPE_BOOT_PROGRESS) {
width = mCurDisplayWidth; width = mCurDisplayWidth;
@@ -8279,7 +8294,7 @@ public class WindowManagerService extends IWindowManager.Stub
width = innerDw; width = innerDw;
height = innerDh; height = innerDh;
} }
mAnimator.startDimming(w.mWinAnimator, w.mExiting ? 0 : w.mAttrs.dimAmount, mAnimator.startDimming(winAnimator, w.mExiting ? 0 : w.mAttrs.dimAmount,
width, height); width, height);
} }
} }