Loading services/core/java/com/android/server/wm/AppTransition.java +19 −8 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import static com.android.internal.R.styleable.WindowAnimation_wallpaperIntraOpe import static com.android.internal.R.styleable.WindowAnimation_wallpaperIntraOpenExitAnimation; import static com.android.internal.R.styleable.WindowAnimation_wallpaperOpenEnterAnimation; import static com.android.internal.R.styleable.WindowAnimation_wallpaperOpenExitAnimation; import static com.android.server.wm.AppWindowAnimator.PROLONG_ANIMATION_AT_START; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ANIM; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_APP_TRANSITIONS; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; Loading Loading @@ -228,6 +229,7 @@ public class AppTransition implements Dump { private int mLastClipRevealMaxTranslation; private boolean mLastHadClipReveal; private boolean mProlongedAnimationsEnded; AppTransition(Context context, WindowManagerService service) { mContext = context; Loading Loading @@ -371,6 +373,22 @@ public class AppTransition implements Dump { topClosingAppAnimator != null ? topClosingAppAnimator.animation : null); mService.getDefaultDisplayContentLocked().getDockedDividerController() .notifyAppTransitionStarting(openingApps, closingApps); // Prolong the start for the transition when docking a task from recents, unless recents // ended it already then we don't need to wait. if (mNextAppTransition == TRANSIT_DOCK_TASK_FROM_RECENTS && !mProlongedAnimationsEnded) { for (int i = openingApps.size() - 1; i >= 0; i--) { final AppWindowAnimator appAnimator = openingApps.valueAt(i).mAppAnimator; appAnimator.startProlongAnimation(PROLONG_ANIMATION_AT_START); } } } /** * Let the transitions manager know that the somebody wanted to end the prolonged animations. */ void notifyProlongedAnimationsEnded() { mProlongedAnimationsEnded = true; } void clear() { Loading @@ -380,6 +398,7 @@ public class AppTransition implements Dump { mNextAppTransitionAnimationsSpecsFuture = null; mDefaultNextAppTransitionAnimationSpec = null; mAnimationFinishedCallback = null; mProlongedAnimationsEnded = false; } void freeze() { Loading Loading @@ -1914,14 +1933,6 @@ public class AppTransition implements Dump { setAppTransition(transit); } } if (transit != TRANSIT_DOCK_TASK_FROM_RECENTS && mNextAppTransition == TRANSIT_DOCK_TASK_FROM_RECENTS) { // Somebody is trying to start another transition while we are waiting for the docking // window to be drawn. Because TRANSIT_DOCK_TASK_FROM_RECENTS starts prolonged // animations, we need to override it or our prolonged animations will never be ended. setAppTransition(transit); } boolean prepared = prepare(); if (isTransitionSet()) { mService.mH.removeMessages(H.APP_TRANSITION_TIMEOUT); Loading services/core/java/com/android/server/wm/WindowManagerService.java +1 −0 Original line number Diff line number Diff line Loading @@ -3944,6 +3944,7 @@ public class WindowManagerService extends IWindowManager.Stub appToken.mAppAnimator.endProlongedAnimation(); } } mAppTransition.notifyProlongedAnimationsEnded(); } } Loading services/core/java/com/android/server/wm/WindowSurfacePlacer.java +0 −4 Original line number Diff line number Diff line Loading @@ -1251,10 +1251,6 @@ class WindowSurfacePlacer { if (mService.mAppTransition.isNextAppTransitionThumbnailUp()) { createThumbnailAppAnimator(transit, wtoken, topOpeningLayer, topClosingLayer); } if (mService.mAppTransition.getAppTransition() == AppTransition.TRANSIT_DOCK_TASK_FROM_RECENTS) { appAnimator.startProlongAnimation(PROLONG_ANIMATION_AT_START); } } return topOpeningApp; } Loading Loading
services/core/java/com/android/server/wm/AppTransition.java +19 −8 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import static com.android.internal.R.styleable.WindowAnimation_wallpaperIntraOpe import static com.android.internal.R.styleable.WindowAnimation_wallpaperIntraOpenExitAnimation; import static com.android.internal.R.styleable.WindowAnimation_wallpaperOpenEnterAnimation; import static com.android.internal.R.styleable.WindowAnimation_wallpaperOpenExitAnimation; import static com.android.server.wm.AppWindowAnimator.PROLONG_ANIMATION_AT_START; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ANIM; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_APP_TRANSITIONS; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; Loading Loading @@ -228,6 +229,7 @@ public class AppTransition implements Dump { private int mLastClipRevealMaxTranslation; private boolean mLastHadClipReveal; private boolean mProlongedAnimationsEnded; AppTransition(Context context, WindowManagerService service) { mContext = context; Loading Loading @@ -371,6 +373,22 @@ public class AppTransition implements Dump { topClosingAppAnimator != null ? topClosingAppAnimator.animation : null); mService.getDefaultDisplayContentLocked().getDockedDividerController() .notifyAppTransitionStarting(openingApps, closingApps); // Prolong the start for the transition when docking a task from recents, unless recents // ended it already then we don't need to wait. if (mNextAppTransition == TRANSIT_DOCK_TASK_FROM_RECENTS && !mProlongedAnimationsEnded) { for (int i = openingApps.size() - 1; i >= 0; i--) { final AppWindowAnimator appAnimator = openingApps.valueAt(i).mAppAnimator; appAnimator.startProlongAnimation(PROLONG_ANIMATION_AT_START); } } } /** * Let the transitions manager know that the somebody wanted to end the prolonged animations. */ void notifyProlongedAnimationsEnded() { mProlongedAnimationsEnded = true; } void clear() { Loading @@ -380,6 +398,7 @@ public class AppTransition implements Dump { mNextAppTransitionAnimationsSpecsFuture = null; mDefaultNextAppTransitionAnimationSpec = null; mAnimationFinishedCallback = null; mProlongedAnimationsEnded = false; } void freeze() { Loading Loading @@ -1914,14 +1933,6 @@ public class AppTransition implements Dump { setAppTransition(transit); } } if (transit != TRANSIT_DOCK_TASK_FROM_RECENTS && mNextAppTransition == TRANSIT_DOCK_TASK_FROM_RECENTS) { // Somebody is trying to start another transition while we are waiting for the docking // window to be drawn. Because TRANSIT_DOCK_TASK_FROM_RECENTS starts prolonged // animations, we need to override it or our prolonged animations will never be ended. setAppTransition(transit); } boolean prepared = prepare(); if (isTransitionSet()) { mService.mH.removeMessages(H.APP_TRANSITION_TIMEOUT); Loading
services/core/java/com/android/server/wm/WindowManagerService.java +1 −0 Original line number Diff line number Diff line Loading @@ -3944,6 +3944,7 @@ public class WindowManagerService extends IWindowManager.Stub appToken.mAppAnimator.endProlongedAnimation(); } } mAppTransition.notifyProlongedAnimationsEnded(); } } Loading
services/core/java/com/android/server/wm/WindowSurfacePlacer.java +0 −4 Original line number Diff line number Diff line Loading @@ -1251,10 +1251,6 @@ class WindowSurfacePlacer { if (mService.mAppTransition.isNextAppTransitionThumbnailUp()) { createThumbnailAppAnimator(transit, wtoken, topOpeningLayer, topClosingLayer); } if (mService.mAppTransition.getAppTransition() == AppTransition.TRANSIT_DOCK_TASK_FROM_RECENTS) { appAnimator.startProlongAnimation(PROLONG_ANIMATION_AT_START); } } return topOpeningApp; } Loading