diff options
| author | 2012-03-20 12:46:48 -0700 | |
|---|---|---|
| committer | 2012-03-20 12:46:48 -0700 | |
| commit | d3ae220286c2f98ec7739d228a85a24987759506 (patch) | |
| tree | 3220510effd842ba4edda36b3a58cbc7ca6d3a5e | |
| parent | 0b83efb64ac6dcc1e59dc13367a623ed1e2dec71 (diff) | |
| parent | 22ce1414a0073b5cddadf1da8475f6fb7b409e44 (diff) | |
Merge "Fix flickering when starting and ending apps."
3 files changed, 13 insertions, 4 deletions
diff --git a/services/java/com/android/server/wm/AppWindowToken.java b/services/java/com/android/server/wm/AppWindowToken.java index 67b667ad1557..3ae9f2405649 100644 --- a/services/java/com/android/server/wm/AppWindowToken.java +++ b/services/java/com/android/server/wm/AppWindowToken.java @@ -135,6 +135,10 @@ class AppWindowToken extends WindowToken { animLayerAdjustment = adj; updateLayers(); } + // Start out animation gone if window is gone, or visible if window is visible. + transformation.clear(); + transformation.setAlpha(reportedVisible ? 1 : 0); + hasTransformation = true; } public void setDummyAnimation() { diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index 69936577e57b..407b7324806c 100644 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -8675,7 +8675,6 @@ public class WindowManagerService extends IWindowManager.Stub } else { mDimAnimator.show(innerDw, innerDh); } - mDimAnimator.show(innerDw, innerDh); mDimAnimator.updateParameters(mContext.getResources(), w, currentTime); } diff --git a/services/java/com/android/server/wm/WindowState.java b/services/java/com/android/server/wm/WindowState.java index 57d03741309a..9fc704942d60 100644 --- a/services/java/com/android/server/wm/WindowState.java +++ b/services/java/com/android/server/wm/WindowState.java @@ -640,6 +640,10 @@ final class WindowState implements WindowManagerPolicy.WindowState { mAnimation = anim; mAnimation.restrictDuration(WindowManagerService.MAX_ANIMATION_DURATION); mAnimation.scaleCurrentDuration(mService.mWindowAnimationScale); + // Start out animation gone if window is gone, or visible if window is visible. + mTransformation.clear(); + mTransformation.setAlpha(mLastHidden ? 0 : 1); + mHasLocalTransformation = true; } public void clearAnimation() { @@ -933,13 +937,15 @@ final class WindowState implements WindowManagerPolicy.WindowState { if (!mService.showSurfaceRobustlyLocked(this)) { return false; } + + mService.enableScreenIfNeededLocked(); + + mService.applyEnterAnimationLocked(this); + mLastAlpha = -1; mHasDrawn = true; mLastHidden = false; mReadyToShow = false; - mService.enableScreenIfNeededLocked(); - - mService.applyEnterAnimationLocked(this); int i = mChildWindows.size(); while (i > 0) { |