Skip to content

Commit 4fe5ebc

Browse files
Craig MautnerAndroid (Google) Code Review
authored andcommitted
Merge "Update DimAnimator layer when its window changes." into jb-dev
2 parents 1870c69 + acafd19 commit 4fe5ebc

File tree

2 files changed

+28
-9
lines changed

2 files changed

+28
-9
lines changed

services/java/com/android/server/wm/WindowAnimator.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -551,6 +551,10 @@ boolean isDimming() {
551551
return mDimParams != null;
552552
}
553553

554+
boolean isDimming(final WindowStateAnimator winAnimator) {
555+
return mDimParams != null && mDimParams.mDimWinAnimator == winAnimator;
556+
}
557+
554558
public void dump(PrintWriter pw, String prefix, boolean dumpAll) {
555559
if (mWindowDetachedWallpaper != null) {
556560
pw.print(" mWindowDetachedWallpaper="); pw.println(mWindowDetachedWallpaper);

services/java/com/android/server/wm/WindowManagerService.java

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7542,7 +7542,10 @@ private final void assignLayersLocked() {
75427542
}
75437543

75447544
for (i=0; i<N; i++) {
7545-
WindowState w = mWindows.get(i);
7545+
final WindowState w = mWindows.get(i);
7546+
final WindowStateAnimator winAnimator = w.mWinAnimator;
7547+
boolean layerChanged = false;
7548+
int oldLayer = w.mLayer;
75467549
if (w.mBaseLayer == curBaseLayer || w.mIsImWindow
75477550
|| (i > 0 && w.mIsWallpaper)) {
75487551
curLayer += WINDOW_LAYER_MULTIPLIER;
@@ -7551,22 +7554,33 @@ private final void assignLayersLocked() {
75517554
curBaseLayer = curLayer = w.mBaseLayer;
75527555
w.mLayer = curLayer;
75537556
}
7557+
if (w.mLayer != oldLayer) {
7558+
layerChanged = true;
7559+
}
7560+
oldLayer = winAnimator.mAnimLayer;
75547561
if (w.mTargetAppToken != null) {
7555-
w.mWinAnimator.mAnimLayer =
7562+
winAnimator.mAnimLayer =
75567563
w.mLayer + w.mTargetAppToken.mAppAnimator.animLayerAdjustment;
75577564
} else if (w.mAppToken != null) {
7558-
w.mWinAnimator.mAnimLayer =
7565+
winAnimator.mAnimLayer =
75597566
w.mLayer + w.mAppToken.mAppAnimator.animLayerAdjustment;
75607567
} else {
7561-
w.mWinAnimator.mAnimLayer = w.mLayer;
7568+
winAnimator.mAnimLayer = w.mLayer;
75627569
}
75637570
if (w.mIsImWindow) {
7564-
w.mWinAnimator.mAnimLayer += mInputMethodAnimLayerAdjustment;
7571+
winAnimator.mAnimLayer += mInputMethodAnimLayerAdjustment;
75657572
} else if (w.mIsWallpaper) {
7566-
w.mWinAnimator.mAnimLayer += mWallpaperAnimLayerAdjustment;
7573+
winAnimator.mAnimLayer += mWallpaperAnimLayerAdjustment;
7574+
}
7575+
if (winAnimator.mAnimLayer != oldLayer) {
7576+
layerChanged = true;
7577+
}
7578+
if (layerChanged && mAnimator.isDimming(winAnimator)) {
7579+
// Force an animation pass just to update the mDimAnimator layer.
7580+
scheduleAnimationLocked();
75677581
}
75687582
if (DEBUG_LAYERS) Slog.v(TAG, "Assign layer " + w + ": "
7569-
+ w.mWinAnimator.mAnimLayer);
7583+
+ winAnimator.mAnimLayer);
75707584
//System.out.println(
75717585
// "Assigned layer " + curLayer + " to " + w.mClient.asBinder());
75727586
}
@@ -8270,7 +8284,8 @@ private void handleNotObscuredLocked(final WindowState w, final long currentTime
82708284
if (!mInnerFields.mDimming) {
82718285
//Slog.i(TAG, "DIM BEHIND: " + w);
82728286
mInnerFields.mDimming = true;
8273-
if (!mAnimator.isDimming()) {
8287+
final WindowStateAnimator winAnimator = w.mWinAnimator;
8288+
if (!mAnimator.isDimming(winAnimator)) {
82748289
final int width, height;
82758290
if (attrs.type == WindowManager.LayoutParams.TYPE_BOOT_PROGRESS) {
82768291
width = mCurDisplayWidth;
@@ -8279,7 +8294,7 @@ private void handleNotObscuredLocked(final WindowState w, final long currentTime
82798294
width = innerDw;
82808295
height = innerDh;
82818296
}
8282-
mAnimator.startDimming(w.mWinAnimator, w.mExiting ? 0 : w.mAttrs.dimAmount,
8297+
mAnimator.startDimming(winAnimator, w.mExiting ? 0 : w.mAttrs.dimAmount,
82838298
width, height);
82848299
}
82858300
}

0 commit comments

Comments
 (0)