Loading services/core/java/com/android/server/am/RecentsAnimation.java +1 −1 Original line number Diff line number Diff line Loading @@ -168,7 +168,7 @@ class RecentsAnimation implements RecentsAnimationCallbacks { "RecentsAnimation#onAnimationFinished_inSurfaceTransaction"); mWindowManager.deferSurfaceLayout(); try { mWindowManager.cleanupRecentsAnimation(); mWindowManager.cleanupRecentsAnimation(moveHomeToTop); // Move the home stack to the front final ActivityRecord homeActivity = mStackSupervisor.getHomeActivity(); Loading services/core/java/com/android/server/wm/Dimmer.java +16 −1 Original line number Diff line number Diff line Loading @@ -109,6 +109,11 @@ class Dimmer { boolean isVisible; SurfaceAnimator mSurfaceAnimator; /** * Determines whether the dim layer should animate before destroying. */ boolean mAnimateExit = true; /** * Used for Dims not associated with a WindowContainer. See {@link Dimmer#dimAbove} for * details on Dim lifecycle. Loading Loading @@ -260,6 +265,12 @@ class Dimmer { } } void dontAnimateExit() { if (mDimState != null) { mDimState.mAnimateExit = false; } } /** * Call after invoking {@link WindowContainer#prepareSurfaces} on children as * described in {@link #resetDimStates}. Loading @@ -274,7 +285,11 @@ class Dimmer { } if (!mDimState.mDimming) { if (!mDimState.mAnimateExit) { t.destroy(mDimState.mDimLayer); } else { startDimExit(mLastRequestedDimContainer, mDimState.mSurfaceAnimator, t); } mDimState = null; return false; } else { Loading services/core/java/com/android/server/wm/RecentsAnimationController.java +4 −2 Original line number Diff line number Diff line Loading @@ -41,7 +41,6 @@ import android.util.Log; import android.util.Slog;import android.util.proto.ProtoOutputStream; import android.util.SparseBooleanArray; import android.util.SparseIntArray; import android.util.proto.ProtoOutputStream; import android.view.IRecentsAnimationController; import android.view.IRecentsAnimationRunner; import android.view.RemoteAnimationTarget; Loading Loading @@ -309,12 +308,15 @@ public class RecentsAnimationController { mCallbacks.onAnimationFinished(false /* moveHomeToTop */); } void cleanupAnimation() { void cleanupAnimation(boolean moveHomeToTop) { if (DEBUG) Log.d(TAG, "cleanupAnimation(): mPendingAnimations=" + mPendingAnimations.size()); for (int i = mPendingAnimations.size() - 1; i >= 0; i--) { final TaskAnimationAdapter adapter = mPendingAnimations.get(i); adapter.mTask.setCanAffectSystemUiFlags(true); if (moveHomeToTop) { adapter.mTask.dontAnimateDimExit(); } adapter.mCapturedFinishCallback.onAnimationFinished(adapter); } mPendingAnimations.clear(); Loading services/core/java/com/android/server/wm/Task.java +4 −0 Original line number Diff line number Diff line Loading @@ -645,6 +645,10 @@ class Task extends WindowContainer<AppWindowToken> { return mCanAffectSystemUiFlags; } void dontAnimateDimExit() { mDimmer.dontAnimateExit(); } @Override public String toString() { return "{taskId=" + mTaskId + " appTokens=" + mChildren + " mdr=" + mDeferRemoval + "}"; Loading services/core/java/com/android/server/wm/WindowManagerService.java +2 −2 Original line number Diff line number Diff line Loading @@ -2700,10 +2700,10 @@ public class WindowManagerService extends IWindowManager.Stub } } public void cleanupRecentsAnimation() { public void cleanupRecentsAnimation(boolean moveHomeToTop) { synchronized (mWindowMap) { if (mRecentsAnimationController != null) { mRecentsAnimationController.cleanupAnimation(); mRecentsAnimationController.cleanupAnimation(moveHomeToTop); mRecentsAnimationController = null; mAppTransition.updateBooster(); } Loading Loading
services/core/java/com/android/server/am/RecentsAnimation.java +1 −1 Original line number Diff line number Diff line Loading @@ -168,7 +168,7 @@ class RecentsAnimation implements RecentsAnimationCallbacks { "RecentsAnimation#onAnimationFinished_inSurfaceTransaction"); mWindowManager.deferSurfaceLayout(); try { mWindowManager.cleanupRecentsAnimation(); mWindowManager.cleanupRecentsAnimation(moveHomeToTop); // Move the home stack to the front final ActivityRecord homeActivity = mStackSupervisor.getHomeActivity(); Loading
services/core/java/com/android/server/wm/Dimmer.java +16 −1 Original line number Diff line number Diff line Loading @@ -109,6 +109,11 @@ class Dimmer { boolean isVisible; SurfaceAnimator mSurfaceAnimator; /** * Determines whether the dim layer should animate before destroying. */ boolean mAnimateExit = true; /** * Used for Dims not associated with a WindowContainer. See {@link Dimmer#dimAbove} for * details on Dim lifecycle. Loading Loading @@ -260,6 +265,12 @@ class Dimmer { } } void dontAnimateExit() { if (mDimState != null) { mDimState.mAnimateExit = false; } } /** * Call after invoking {@link WindowContainer#prepareSurfaces} on children as * described in {@link #resetDimStates}. Loading @@ -274,7 +285,11 @@ class Dimmer { } if (!mDimState.mDimming) { if (!mDimState.mAnimateExit) { t.destroy(mDimState.mDimLayer); } else { startDimExit(mLastRequestedDimContainer, mDimState.mSurfaceAnimator, t); } mDimState = null; return false; } else { Loading
services/core/java/com/android/server/wm/RecentsAnimationController.java +4 −2 Original line number Diff line number Diff line Loading @@ -41,7 +41,6 @@ import android.util.Log; import android.util.Slog;import android.util.proto.ProtoOutputStream; import android.util.SparseBooleanArray; import android.util.SparseIntArray; import android.util.proto.ProtoOutputStream; import android.view.IRecentsAnimationController; import android.view.IRecentsAnimationRunner; import android.view.RemoteAnimationTarget; Loading Loading @@ -309,12 +308,15 @@ public class RecentsAnimationController { mCallbacks.onAnimationFinished(false /* moveHomeToTop */); } void cleanupAnimation() { void cleanupAnimation(boolean moveHomeToTop) { if (DEBUG) Log.d(TAG, "cleanupAnimation(): mPendingAnimations=" + mPendingAnimations.size()); for (int i = mPendingAnimations.size() - 1; i >= 0; i--) { final TaskAnimationAdapter adapter = mPendingAnimations.get(i); adapter.mTask.setCanAffectSystemUiFlags(true); if (moveHomeToTop) { adapter.mTask.dontAnimateDimExit(); } adapter.mCapturedFinishCallback.onAnimationFinished(adapter); } mPendingAnimations.clear(); Loading
services/core/java/com/android/server/wm/Task.java +4 −0 Original line number Diff line number Diff line Loading @@ -645,6 +645,10 @@ class Task extends WindowContainer<AppWindowToken> { return mCanAffectSystemUiFlags; } void dontAnimateDimExit() { mDimmer.dontAnimateExit(); } @Override public String toString() { return "{taskId=" + mTaskId + " appTokens=" + mChildren + " mdr=" + mDeferRemoval + "}"; Loading
services/core/java/com/android/server/wm/WindowManagerService.java +2 −2 Original line number Diff line number Diff line Loading @@ -2700,10 +2700,10 @@ public class WindowManagerService extends IWindowManager.Stub } } public void cleanupRecentsAnimation() { public void cleanupRecentsAnimation(boolean moveHomeToTop) { synchronized (mWindowMap) { if (mRecentsAnimationController != null) { mRecentsAnimationController.cleanupAnimation(); mRecentsAnimationController.cleanupAnimation(moveHomeToTop); mRecentsAnimationController = null; mAppTransition.updateBooster(); } Loading