diff options
| author | 2023-05-01 22:59:04 +0000 | |
|---|---|---|
| committer | 2023-05-01 22:59:04 +0000 | |
| commit | bf7fe4a43d60d8f9ed94cca2fd6817782e03a36a (patch) | |
| tree | 0283b3813df314fdcc72d4628f7db30060460197 | |
| parent | 46805d766a473f0962de68ab52be195ef51a7c83 (diff) | |
| parent | 22b480c3aa03727c47a73e850ddfaf8510c7b9b6 (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.java | 7 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/TransitionController.java | 9 |
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(); } |