Merge "Fix issue with leaked preserved surface" into pi-dev

This commit is contained in:
Jorim Jaggi
2018-04-12 11:14:55 +00:00
committed by Android (Google) Code Review
2 changed files with 10 additions and 5 deletions

View File

@@ -4106,11 +4106,10 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
mDestroying = true;
final boolean hasSurface = mWinAnimator.hasSurface();
if (hasSurface) {
// Use pendingTransaction here so hide is done the same transaction as the other
// animations when exiting
mWinAnimator.hide(getPendingTransaction(), "onExitAnimationDone");
}
// Use pendingTransaction here so hide is done the same transaction as the other
// animations when exiting
mWinAnimator.hide(getPendingTransaction(), "onExitAnimationDone");
// If we have an app token, we ask it to destroy the surface for us, so that it can take
// care to ensure the activity has actually stopped and the surface is not still in use.

View File

@@ -308,6 +308,12 @@ class WindowStateAnimator {
if (!mLastHidden) {
//dump();
mLastHidden = true;
// We may have a preserved surface which we no longer need. If there was a quick
// VISIBLE, GONE, VISIBLE, GONE sequence, the surface may never draw, so we don't mark
// it to be destroyed in prepareSurfaceLocked.
markPreservedSurfaceForDestroy();
if (mSurfaceController != null) {
mSurfaceController.hide(transaction, reason);
}