diff options
| author | 2024-08-07 11:22:35 -0700 | |
|---|---|---|
| committer | 2024-08-07 11:49:26 -0700 | |
| commit | f5e3ece92864d1cf72566afa672d8d873bfe000f (patch) | |
| tree | 7bd7310269b2bec5bdaf379ed88f87d8de1d53cd | |
| parent | ef54a7161c6d29bf1aaf20b46e5db8752be3b2db (diff) | |
Small preventative fixes/refactors
Some minor re-arrangement to improve correctness
and reduce dependencies. For example, this was only
checking some activities to see if transition is "no-op"
when it should be checking the transition itself
in-case there were some unexpected changes.
Bug: 340386663
Test: existing tests
Flag: com.android.window.flags.migrate_predictive_back_transition
Change-Id: Ie0326940090645b0c04e673d849c039cd5b86658
| -rw-r--r-- | services/core/java/com/android/server/wm/BackNavigationController.java | 13 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/Transition.java | 9 |
2 files changed, 12 insertions, 10 deletions
diff --git a/services/core/java/com/android/server/wm/BackNavigationController.java b/services/core/java/com/android/server/wm/BackNavigationController.java index b4c75572d68f..06e665e88b65 100644 --- a/services/core/java/com/android/server/wm/BackNavigationController.java +++ b/services/core/java/com/android/server/wm/BackNavigationController.java @@ -1935,8 +1935,7 @@ class BackNavigationController { for (int i = penActivities.length - 1; i >= 0; --i) { ActivityRecord resetActivity = penActivities[i]; if (transition.isInTransition(resetActivity)) { - resetActivity.mTransitionController.setReady( - resetActivity.getDisplayContent(), true); + transition.setReady(resetActivity.getDisplayContent(), true); return true; } } @@ -1991,18 +1990,12 @@ class BackNavigationController { activity.makeVisibleIfNeeded(null /* starting */, true /* notifyToClient */); } } - boolean needTransition = false; - final DisplayContent dc = affects.get(0).getDisplayContent(); - for (int i = affects.size() - 1; i >= 0; --i) { - final ActivityRecord activity = affects.get(i); - needTransition |= tc.isCollecting(activity); - } if (prepareOpen != null) { - if (needTransition) { + if (prepareOpen.hasChanges()) { tc.requestStartTransition(prepareOpen, null /*startTask */, null /* remoteTransition */, null /* displayChange */); - tc.setReady(dc); + prepareOpen.setReady(affects.get(0), true); return prepareOpen; } else { prepareOpen.abort(); diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java index 5698750170f4..57a9aba2f4a3 100644 --- a/services/core/java/com/android/server/wm/Transition.java +++ b/services/core/java/com/android/server/wm/Transition.java @@ -3350,6 +3350,15 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener { return chg.hasChanged(); } + boolean hasChanges() { + for (int i = 0; i < mParticipants.size(); ++i) { + if (mChanges.get(mParticipants.valueAt(i)).hasChanged()) { + return true; + } + } + return false; + } + @VisibleForTesting static class ChangeInfo { private static final int FLAG_NONE = 0; |