Merge "Reduce operations in postApplyAnimation for shell transition" into tm-qpr-dev

This commit is contained in:
Riddle Hsu
2022-12-06 06:26:13 +00:00
committed by Android (Google) Code Review
2 changed files with 18 additions and 16 deletions

View File

@@ -5443,25 +5443,20 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
*/ */
private void postApplyAnimation(boolean visible, boolean fromTransition) { private void postApplyAnimation(boolean visible, boolean fromTransition) {
final boolean usingShellTransitions = mTransitionController.isShellTransitionsEnabled(); final boolean usingShellTransitions = mTransitionController.isShellTransitionsEnabled();
final boolean delayed = isAnimating(PARENTS | CHILDREN, final boolean delayed = !usingShellTransitions && isAnimating(PARENTS | CHILDREN,
ANIMATION_TYPE_APP_TRANSITION | ANIMATION_TYPE_WINDOW_ANIMATION ANIMATION_TYPE_APP_TRANSITION | ANIMATION_TYPE_WINDOW_ANIMATION
| ANIMATION_TYPE_RECENTS); | ANIMATION_TYPE_RECENTS);
if (!delayed) { if (!delayed && !usingShellTransitions) {
// We aren't delayed anything, but exiting windows rely on the animation finished // We aren't delayed anything, but exiting windows rely on the animation finished
// callback being called in case the ActivityRecord was pretending to be delayed, // callback being called in case the ActivityRecord was pretending to be delayed,
// which we might have done because we were in closing/opening apps list. // which we might have done because we were in closing/opening apps list.
if (!usingShellTransitions) { onAnimationFinished(ANIMATION_TYPE_APP_TRANSITION, null /* AnimationAdapter */);
onAnimationFinished(ANIMATION_TYPE_APP_TRANSITION, null /* AnimationAdapter */); if (visible) {
if (visible) { // The token was made immediately visible, there will be no entrance animation.
// The token was made immediately visible, there will be no entrance animation. // We need to inform the client the enter animation was finished.
// We need to inform the client the enter animation was finished. mEnteringAnimation = true;
mEnteringAnimation = true; mWmService.mActivityManagerAppTransitionNotifier.onAppTransitionFinishedLocked(
mWmService.mActivityManagerAppTransitionNotifier.onAppTransitionFinishedLocked( token);
token);
}
} else {
// update wallpaper target
setAppLayoutChanges(FINISH_LAYOUT_REDO_WALLPAPER, "ActivityRecord");
} }
} }
@@ -5470,8 +5465,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
// updated. // updated.
// If we're becoming invisible, update the client visibility if we are not running an // If we're becoming invisible, update the client visibility if we are not running an
// animation. Otherwise, we'll update client visibility in onAnimationFinished. // animation. Otherwise, we'll update client visibility in onAnimationFinished.
if (visible || !isAnimating(PARENTS, ANIMATION_TYPE_APP_TRANSITION | ANIMATION_TYPE_RECENTS) if (visible || usingShellTransitions
|| usingShellTransitions) { || !isAnimating(PARENTS, ANIMATION_TYPE_APP_TRANSITION | ANIMATION_TYPE_RECENTS)) {
setClientVisible(visible); setClientVisible(visible);
} }

View File

@@ -37,6 +37,7 @@ import static android.view.WindowManagerPolicyConstants.KEYGUARD_GOING_AWAY_FLAG
import static android.view.WindowManagerPolicyConstants.KEYGUARD_GOING_AWAY_FLAG_TO_SHADE; import static android.view.WindowManagerPolicyConstants.KEYGUARD_GOING_AWAY_FLAG_TO_SHADE;
import static android.view.WindowManagerPolicyConstants.KEYGUARD_GOING_AWAY_FLAG_WITH_WALLPAPER; import static android.view.WindowManagerPolicyConstants.KEYGUARD_GOING_AWAY_FLAG_WITH_WALLPAPER;
import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM; import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.wm.ActivityTaskSupervisor.PRESERVE_WINDOWS; import static com.android.server.wm.ActivityTaskSupervisor.PRESERVE_WINDOWS;
@@ -651,6 +652,12 @@ class KeyguardController {
mRequestDismissKeyguard = lastDismissKeyguardActivity != mDismissingKeyguardActivity mRequestDismissKeyguard = lastDismissKeyguardActivity != mDismissingKeyguardActivity
&& !mOccluded && !mKeyguardGoingAway && !mOccluded && !mKeyguardGoingAway
&& mDismissingKeyguardActivity != null; && mDismissingKeyguardActivity != null;
if (mOccluded && mKeyguardShowing && !display.isSleeping() && !top.fillsParent()
&& display.mWallpaperController.getWallpaperTarget() == null) {
// The occluding activity may be translucent or not fill screen. Then let wallpaper
// to check whether it should set itself as target to avoid blank background.
display.pendingLayoutChanges |= FINISH_LAYOUT_REDO_WALLPAPER;
}
if (mTopTurnScreenOnActivity != lastTurnScreenOnActivity if (mTopTurnScreenOnActivity != lastTurnScreenOnActivity
&& mTopTurnScreenOnActivity != null && mTopTurnScreenOnActivity != null