Merge "Reset leash and content overlay if auto-enter-pip is aborted" into sc-dev

This commit is contained in:
Hongwei Wang
2021-07-23 16:55:14 +00:00
committed by Android (Google) Code Review
3 changed files with 11 additions and 2 deletions

View File

@@ -5033,6 +5033,12 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
void notifyAppStopped() {
ProtoLog.v(WM_DEBUG_ADD_REMOVE, "notifyAppStopped: %s", this);
mAppStopped = true;
// This is to fix the edge case that auto-enter-pip is finished in Launcher but app calls
// setAutoEnterEnabled(false) and transitions to STOPPED state, see b/191930787.
// Clear any surface transactions and content overlay in this case.
if (task != null && task.mLastRecentsAnimationTransaction != null) {
task.clearLastRecentsAnimationTransaction(true /* forceRemoveOverlay */);
}
// Reset the last saved PiP snap fraction on app stop.
mDisplayContent.mPinnedTaskController.onActivityHidden(mActivityComponent);
mDisplayContent.mUnknownAppVisibilityController.appRemovedOrHidden(this);

View File

@@ -2151,7 +2151,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
rootTask.setLastRecentsAnimationTransaction(
task.mLastRecentsAnimationTransaction,
task.mLastRecentsAnimationOverlay);
task.clearLastRecentsAnimationTransaction();
task.clearLastRecentsAnimationTransaction(false /* forceRemoveOverlay */);
}
// There are multiple activities in the task and moving the top activity should

View File

@@ -7627,7 +7627,10 @@ class Task extends WindowContainer<WindowContainer> {
mLastRecentsAnimationOverlay = overlay;
}
void clearLastRecentsAnimationTransaction() {
void clearLastRecentsAnimationTransaction(boolean forceRemoveOverlay) {
if (forceRemoveOverlay && mLastRecentsAnimationOverlay != null) {
getPendingTransaction().remove(mLastRecentsAnimationOverlay);
}
mLastRecentsAnimationTransaction = null;
mLastRecentsAnimationOverlay = null;
// reset also the crop and transform introduced by mLastRecentsAnimationTransaction