Remove detached wallpaper animations
Wasn't really supported anymore. Let's remove it from the API.
Bug: 112628612
Change-Id: I1276375cc204887a8da37a7f09ae2046216ca448
diff --git a/api/current.txt b/api/current.txt
index 63555b9..2b9c594 100755
--- a/api/current.txt
+++ b/api/current.txt
@@ -50243,7 +50243,7 @@
method public long computeDurationHint();
method protected void ensureInterpolator();
method public int getBackgroundColor();
- method public boolean getDetachWallpaper();
+ method public deprecated boolean getDetachWallpaper();
method public long getDuration();
method public boolean getFillAfter();
method public boolean getFillBefore();
@@ -50267,7 +50267,7 @@
method public void scaleCurrentDuration(float);
method public void setAnimationListener(android.view.animation.Animation.AnimationListener);
method public void setBackgroundColor(int);
- method public void setDetachWallpaper(boolean);
+ method public deprecated void setDetachWallpaper(boolean);
method public void setDuration(long);
method public void setFillAfter(boolean);
method public void setFillBefore(boolean);
diff --git a/core/java/android/view/animation/Animation.java b/core/java/android/view/animation/Animation.java
index 87b7b05..0e1f767 100644
--- a/core/java/android/view/animation/Animation.java
+++ b/core/java/android/view/animation/Animation.java
@@ -203,11 +203,6 @@
*/
private float mScaleFactor = 1f;
- /**
- * Don't animate the wallpaper.
- */
- private boolean mDetachWallpaper = false;
-
private boolean mShowWallpaper;
private boolean mMore = true;
@@ -667,9 +662,10 @@
*
* @param detachWallpaper true if the wallpaper should be detached from the animation
* @attr ref android.R.styleable#Animation_detachWallpaper
+ *
+ * @deprecated All window animations are running with detached wallpaper.
*/
public void setDetachWallpaper(boolean detachWallpaper) {
- mDetachWallpaper = detachWallpaper;
}
/**
@@ -793,9 +789,11 @@
/**
* Return value of {@link #setDetachWallpaper(boolean)}.
* @attr ref android.R.styleable#Animation_detachWallpaper
+ *
+ * @deprecated All window animations are running with detached wallpaper.
*/
public boolean getDetachWallpaper() {
- return mDetachWallpaper;
+ return false;
}
/**
diff --git a/services/core/java/com/android/server/wm/AnimationAdapter.java b/services/core/java/com/android/server/wm/AnimationAdapter.java
index 00e3050..be8a0bd 100644
--- a/services/core/java/com/android/server/wm/AnimationAdapter.java
+++ b/services/core/java/com/android/server/wm/AnimationAdapter.java
@@ -35,12 +35,6 @@
long STATUS_BAR_TRANSITION_DURATION = 120L;
/**
- * @return Whether we should detach the wallpaper during the animation.
- * @see Animation#setDetachWallpaper
- */
- boolean getDetachWallpaper();
-
- /**
* @return Whether we should show the wallpaper during the animation.
* @see Animation#getShowWallpaper()
*/
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 6163592..4f31ca4 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -439,36 +439,12 @@
return;
}
- final int flags = w.mAttrs.flags;
-
- // If this window is animating, make a note that we have an animating window and take
- // care of a request to run a detached wallpaper animation.
- if (w.isAnimating()) {
- final AnimationAdapter anim = w.getAnimation();
- if (anim != null) {
- if ((flags & FLAG_SHOW_WALLPAPER) != 0 && anim.getDetachWallpaper()) {
- mTmpWindow = w;
- }
- final int color = anim.getBackgroundColor();
- if (color != 0) {
- final TaskStack stack = w.getStack();
- if (stack != null) {
- stack.setAnimationBackground(winAnimator, color);
- }
- }
- }
- }
-
- // If this window's app token is running a detached wallpaper animation, make a note so
- // we can ensure the wallpaper is displayed behind it.
- final AppWindowToken atoken = winAnimator.mWin.mAppToken;
- final AnimationAdapter animation = atoken != null ? atoken.getAnimation() : null;
- if (animation != null) {
- if ((flags & FLAG_SHOW_WALLPAPER) != 0 && animation.getDetachWallpaper()) {
- mTmpWindow = w;
- }
-
- final int color = animation.getBackgroundColor();
+ // If this window is animating, ensure the animation background is set.
+ final AnimationAdapter anim = w.mAppToken != null
+ ? w.mAppToken.getAnimation()
+ : w.getAnimation();
+ if (anim != null) {
+ final int color = anim.getBackgroundColor();
if (color != 0) {
final TaskStack stack = w.getStack();
if (stack != null) {
@@ -2904,26 +2880,16 @@
return false;
}
- void updateWindowsForAnimator(WindowAnimator animator) {
- mTmpWindowAnimator = animator;
+ void updateWindowsForAnimator() {
forAllWindows(mUpdateWindowsForAnimator, true /* traverseTopToBottom */);
}
- void updateWallpaperForAnimator(WindowAnimator animator) {
+ /**
+ * Updates the {@link TaskStack#setAnimationBackground} for all windows.
+ */
+ void updateBackgroundForAnimator() {
resetAnimationBackgroundAnimator();
-
- // Used to indicate a detached wallpaper.
- mTmpWindow = null;
- mTmpWindowAnimator = animator;
-
forAllWindows(mUpdateWallpaperForAnimator, true /* traverseTopToBottom */);
-
- if (animator.mWindowDetachedWallpaper != mTmpWindow) {
- if (DEBUG_WALLPAPER) Slog.v(TAG, "Detached wallpaper changed from "
- + animator.mWindowDetachedWallpaper + " to " + mTmpWindow);
- animator.mWindowDetachedWallpaper = mTmpWindow;
- animator.mBulkUpdateParams |= SET_WALLPAPER_MAY_CHANGE;
- }
}
boolean isInputMethodClientFocus(int uid, int pid) {
diff --git a/services/core/java/com/android/server/wm/LocalAnimationAdapter.java b/services/core/java/com/android/server/wm/LocalAnimationAdapter.java
index d89d6f0..77a024c 100644
--- a/services/core/java/com/android/server/wm/LocalAnimationAdapter.java
+++ b/services/core/java/com/android/server/wm/LocalAnimationAdapter.java
@@ -44,11 +44,6 @@
}
@Override
- public boolean getDetachWallpaper() {
- return mSpec.getDetachWallpaper();
- }
-
- @Override
public boolean getShowWallpaper() {
return mSpec.getShowWallpaper();
}
@@ -98,13 +93,6 @@
interface AnimationSpec {
/**
- * @see AnimationAdapter#getDetachWallpaper
- */
- default boolean getDetachWallpaper() {
- return false;
- }
-
- /**
* @see AnimationAdapter#getShowWallpaper
*/
default boolean getShowWallpaper() {
diff --git a/services/core/java/com/android/server/wm/RecentsAnimationController.java b/services/core/java/com/android/server/wm/RecentsAnimationController.java
index 1eae567..8a78b75 100644
--- a/services/core/java/com/android/server/wm/RecentsAnimationController.java
+++ b/services/core/java/com/android/server/wm/RecentsAnimationController.java
@@ -594,11 +594,6 @@
}
@Override
- public boolean getDetachWallpaper() {
- return false;
- }
-
- @Override
public boolean getShowWallpaper() {
return false;
}
diff --git a/services/core/java/com/android/server/wm/RemoteAnimationController.java b/services/core/java/com/android/server/wm/RemoteAnimationController.java
index 00422e3..8ec0a01 100644
--- a/services/core/java/com/android/server/wm/RemoteAnimationController.java
+++ b/services/core/java/com/android/server/wm/RemoteAnimationController.java
@@ -325,11 +325,6 @@
}
@Override
- public boolean getDetachWallpaper() {
- return false;
- }
-
- @Override
public boolean getShowWallpaper() {
return false;
}
diff --git a/services/core/java/com/android/server/wm/WallpaperController.java b/services/core/java/com/android/server/wm/WallpaperController.java
index 9e44b62..a448f97 100644
--- a/services/core/java/com/android/server/wm/WallpaperController.java
+++ b/services/core/java/com/android/server/wm/WallpaperController.java
@@ -120,13 +120,11 @@
}
mFindResults.resetTopWallpaper = true;
- if (w != winAnimator.mWindowDetachedWallpaper && w.mAppToken != null) {
+ if (w.mAppToken != null && w.mAppToken.isHidden() && !w.mAppToken.isSelfAnimating()) {
+
// If this window's app token is hidden and not animating, it is of no interest to us.
- if (w.mAppToken.isHidden() && !w.mAppToken.isSelfAnimating()) {
- if (DEBUG_WALLPAPER) Slog.v(TAG,
- "Skipping hidden and not animating token: " + w);
- return false;
- }
+ if (DEBUG_WALLPAPER) Slog.v(TAG, "Skipping hidden and not animating token: " + w);
+ return false;
}
if (DEBUG_WALLPAPER) Slog.v(TAG, "Win " + w + ": isOnScreen=" + w.isOnScreen()
+ " mDrawState=" + w.mWinAnimator.mDrawState);
@@ -185,10 +183,6 @@
}
// Found a target! End search.
return true;
- } else if (w == winAnimator.mWindowDetachedWallpaper) {
- if (DEBUG_WALLPAPER_LIGHT) Slog.v(TAG,
- "Found animating detached wallpaper target win: " + w);
- mFindResults.setUseTopWallpaperAsTarget(true);
}
return false;
};
diff --git a/services/core/java/com/android/server/wm/WindowAnimationSpec.java b/services/core/java/com/android/server/wm/WindowAnimationSpec.java
index 825255e..98c77ac 100644
--- a/services/core/java/com/android/server/wm/WindowAnimationSpec.java
+++ b/services/core/java/com/android/server/wm/WindowAnimationSpec.java
@@ -72,11 +72,6 @@
}
@Override
- public boolean getDetachWallpaper() {
- return mAnimation.getDetachWallpaper();
- }
-
- @Override
public boolean getShowWallpaper() {
return mAnimation.getShowWallpaper();
}
diff --git a/services/core/java/com/android/server/wm/WindowAnimator.java b/services/core/java/com/android/server/wm/WindowAnimator.java
index 793ffce..a9e4be2 100644
--- a/services/core/java/com/android/server/wm/WindowAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowAnimator.java
@@ -58,17 +58,6 @@
/** Time of current animation step. Reset on each iteration */
long mCurrentTime;
- boolean mAppWindowAnimating;
- /** Skip repeated AppWindowTokens initialization. Note that AppWindowsToken's version of this
- * is a long initialized to Long.MIN_VALUE so that it doesn't match this value on startup. */
- int mAnimTransactionSequence;
-
- /** Window currently running an animation that has requested it be detached
- * from the wallpaper. This means we need to ensure the wallpaper is
- * visible behind it in case it animates in a way that would allow it to be
- * seen. If multiple windows satisfy this, use the lowest window. */
- WindowState mWindowDetachedWallpaper = null;
-
int mBulkUpdateParams = 0;
Object mLastWindowFreezeSource;
@@ -191,9 +180,8 @@
// Update animations of all applications, including those
// associated with exiting/removed apps
- ++mAnimTransactionSequence;
- dc.updateWindowsForAnimator(this);
- dc.updateWallpaperForAnimator(this);
+ dc.updateWindowsForAnimator();
+ dc.updateBackgroundForAnimator();
dc.prepareSurfaces();
}
@@ -317,8 +305,6 @@
pw.println();
if (dumpAll) {
- pw.print(prefix); pw.print("mAnimTransactionSequence=");
- pw.print(mAnimTransactionSequence);
pw.print(prefix); pw.print("mCurrentTime=");
pw.println(TimeUtils.formatUptime(mCurrentTime));
}
@@ -327,10 +313,6 @@
pw.print(Integer.toHexString(mBulkUpdateParams));
pw.println(bulkUpdateParamsToString(mBulkUpdateParams));
}
- if (mWindowDetachedWallpaper != null) {
- pw.print(prefix); pw.print("mWindowDetachedWallpaper=");
- pw.println(mWindowDetachedWallpaper);
- }
}
int getPendingLayoutChanges(final int displayId) {
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java
index 00599a0..2beb788 100644
--- a/services/core/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java
@@ -263,10 +263,6 @@
+ ", reportedVisible="
+ (mWin.mAppToken != null ? mWin.mAppToken.reportedVisible : false));
- if (mAnimator.mWindowDetachedWallpaper == mWin) {
- mAnimator.mWindowDetachedWallpaper = null;
- }
-
mWin.checkPolicyVisibilityChange();
final DisplayContent displayContent = mWin.getDisplayContent();
if (mAttrType == LayoutParams.TYPE_STATUS_BAR && mWin.mPolicyVisibility) {
@@ -276,7 +272,6 @@
displayContent.setLayoutNeeded();
}
}
-
mWin.onExitAnimationDone();
final int displayId = mWin.getDisplayId();
int pendingLayoutChanges = FINISH_LAYOUT_REDO_ANIM;