Do not clear exiting flag following explicit remove.

If we begin an exit animation (setting the mExiting flag)
in response to an explicit client remove request, we depend
on mExiting in WindowStateAnimator::finishExit to perform
the final clenaup of the window. If we are transitioning
back in to the app, and it calls removeWindow before the
app transition is ready, we could have handleOpeningApps
clear the mExiting flag leaving this partially disposed window
around due to the above mechanism.

Bug: 26157153
Change-Id: I512fbbd080d423336796284fca490c2c22709180
This commit is contained in:
Robert Carr
2016-01-19 21:24:57 -08:00
committed by Rob Carr
parent ccc2e0d9df
commit 7fed68d116

View File

@@ -1197,7 +1197,12 @@ class WindowSurfacePlacer {
// if app window is removed, or window relayout to invisible. We don't want to
// clear it out for windows that get replaced, because the animation depends on
// the flag to remove the replaced window.
if (!win.mWillReplaceWindow) {
//
// We also don't clear the mExiting flag for windows which have the
// mRemoveOnExit flag. This indicates an explicit remove request has been issued
// by the client. We should let animation proceed and not clear this flag or
// they won't eventually be removed by WindowStateAnimator#finishExit.
if (!win.mWillReplaceWindow && !win.mRemoveOnExit) {
win.mExiting = false;
}
if (win.mWinAnimator.mAnimLayer > layer) {