Merge "Fix clean-up order when player crashes" into main
diff --git a/services/core/java/com/android/server/wm/TransitionController.java b/services/core/java/com/android/server/wm/TransitionController.java
index c134464..1f01778 100644
--- a/services/core/java/com/android/server/wm/TransitionController.java
+++ b/services/core/java/com/android/server/wm/TransitionController.java
@@ -271,13 +271,14 @@
if (mTransitionPlayer == null) return;
// Immediately set to null so that nothing inadvertently starts/queues.
mTransitionPlayer = null;
- // Clean-up/finish any playing transitions.
- for (int i = 0; i < mPlayingTransitions.size(); ++i) {
+ // Clean-up/finish any playing transitions. Backwards since they can remove themselves.
+ for (int i = mPlayingTransitions.size() - 1; i >= 0; --i) {
mPlayingTransitions.get(i).cleanUpOnFailure();
}
mPlayingTransitions.clear();
// Clean up waiting transitions first since they technically started first.
- for (int i = 0; i < mWaitingTransitions.size(); ++i) {
+ // Backwards since they can remove themselves.
+ for (int i = mWaitingTransitions.size() - 1; i >= 0; --i) {
mWaitingTransitions.get(i).abort();
}
mWaitingTransitions.clear();