Fix regression with docking from recents transition
am: 363ab98
* commit '363ab98fced07bf7647355367be9e6ef76751450':
Fix regression with docking from recents transition
Change-Id: Ifcff80301a002bd43c7c551094be997635987da8
This commit is contained in:
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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() {
|
||||
@@ -380,6 +398,7 @@ public class AppTransition implements Dump {
|
||||
mNextAppTransitionAnimationsSpecsFuture = null;
|
||||
mDefaultNextAppTransitionAnimationSpec = null;
|
||||
mAnimationFinishedCallback = null;
|
||||
mProlongedAnimationsEnded = false;
|
||||
}
|
||||
|
||||
void freeze() {
|
||||
@@ -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);
|
||||
|
||||
@@ -3944,6 +3944,7 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
appToken.mAppAnimator.endProlongedAnimation();
|
||||
}
|
||||
}
|
||||
mAppTransition.notifyProlongedAnimationsEnded();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user