diff options
Diffstat (limited to 'core/java/android/view/InsetsAnimationControlImpl.java')
| -rw-r--r-- | core/java/android/view/InsetsAnimationControlImpl.java | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/core/java/android/view/InsetsAnimationControlImpl.java b/core/java/android/view/InsetsAnimationControlImpl.java index 2b30c2dd658e..baee4123ef47 100644 --- a/core/java/android/view/InsetsAnimationControlImpl.java +++ b/core/java/android/view/InsetsAnimationControlImpl.java @@ -180,10 +180,19 @@ public class InsetsAnimationControlImpl implements WindowInsetsAnimationControll mAnimation.setAlpha(mPendingAlpha); if (mFinished) { mController.notifyFinished(this, mShownOnFinish); + releaseLeashes(); } return mFinished; } + private void releaseLeashes() { + for (int i = mControls.size() - 1; i >= 0; i--) { + final InsetsSourceControl c = mControls.valueAt(i); + if (c == null) continue; + c.release(mController::releaseSurfaceControlFromRt); + } + } + @Override public void finish(boolean shown) { if (mCancelled || mFinished) { @@ -191,6 +200,7 @@ public class InsetsAnimationControlImpl implements WindowInsetsAnimationControll } setInsetsAndAlpha(shown ? mShownInsets : mHiddenInsets, 1f /* alpha */, 1f /* fraction */); mFinished = true; + mShownOnFinish = shown; } @@ -207,6 +217,8 @@ public class InsetsAnimationControlImpl implements WindowInsetsAnimationControll } mCancelled = true; mListener.onCancelled(); + + releaseLeashes(); } public boolean isCancelled() { |
