Merge "Reduce operations in postApplyAnimation for shell transition" into tm-qpr-dev
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user