summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Evan Rosky <erosky@google.com> 2023-05-01 22:59:04 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-05-01 22:59:04 +0000
commitbf7fe4a43d60d8f9ed94cca2fd6817782e03a36a (patch)
tree0283b3813df314fdcc72d4628f7db30060460197
parent46805d766a473f0962de68ab52be195ef51a7c83 (diff)
parent22b480c3aa03727c47a73e850ddfaf8510c7b9b6 (diff)
Merge "Don't try to auto-pip if there's already a pip" into udc-dev
-rw-r--r--services/core/java/com/android/server/wm/Transition.java7
-rw-r--r--services/core/java/com/android/server/wm/TransitionController.java9
2 files changed, 13 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java
index 7bd3b3253614..fe754691314d 100644
--- a/services/core/java/com/android/server/wm/Transition.java
+++ b/services/core/java/com/android/server/wm/Transition.java
@@ -954,6 +954,13 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
// to the transient activity.
ar.supportsEnterPipOnTaskSwitch = true;
}
+ // Make sure this activity can enter pip under the current circumstances.
+ // `enterPictureInPicture` internally checks, but with beforeStopping=false which
+ // is specifically for non-auto-enter.
+ if (!ar.checkEnterPictureInPictureState("enterPictureInPictureMode",
+ true /* beforeStopping */)) {
+ return false;
+ }
return mController.mAtm.enterPictureInPictureMode(ar, ar.pictureInPictureArgs,
false /* fromClient */);
}
diff --git a/services/core/java/com/android/server/wm/TransitionController.java b/services/core/java/com/android/server/wm/TransitionController.java
index 7cb6b46666f9..c9316bf6e972 100644
--- a/services/core/java/com/android/server/wm/TransitionController.java
+++ b/services/core/java/com/android/server/wm/TransitionController.java
@@ -813,6 +813,10 @@ class TransitionController {
}
ProtoLog.v(ProtoLogGroup.WM_DEBUG_WINDOW_TRANSITIONS, "Finish Transition: %s", record);
mPlayingTransitions.remove(record);
+ if (!inTransition()) {
+ // reset track-count now since shell-side is idle.
+ mTrackCount = 0;
+ }
updateRunningRemoteAnimation(record, false /* isPlaying */);
record.finishTransition();
for (int i = mAnimatingExitWindows.size() - 1; i >= 0; i--) {
@@ -825,10 +829,9 @@ class TransitionController {
}
}
mRunningLock.doNotifyLocked();
- // Run state-validation checks when no transitions are active anymore.
+ // Run state-validation checks when no transitions are active anymore (Note: sometimes
+ // finish can start a transition, so check afterwards -- eg. pip).
if (!inTransition()) {
- // Can reset track-count now that everything is idle.
- mTrackCount = 0;
validateStates();
mAtm.mWindowManager.onAnimationFinished();
}