summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Craig Mautner <cmautner@google.com> 2012-03-20 12:46:48 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2012-03-20 12:46:48 -0700
commitd3ae220286c2f98ec7739d228a85a24987759506 (patch)
tree3220510effd842ba4edda36b3a58cbc7ca6d3a5e
parent0b83efb64ac6dcc1e59dc13367a623ed1e2dec71 (diff)
parent22ce1414a0073b5cddadf1da8475f6fb7b409e44 (diff)
Merge "Fix flickering when starting and ending apps."
-rw-r--r--services/java/com/android/server/wm/AppWindowToken.java4
-rw-r--r--services/java/com/android/server/wm/WindowManagerService.java1
-rw-r--r--services/java/com/android/server/wm/WindowState.java12
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) {