summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Evan Rosky <erosky@google.com> 2024-08-07 11:22:35 -0700
committer Evan Rosky <erosky@google.com> 2024-08-07 11:49:26 -0700
commitf5e3ece92864d1cf72566afa672d8d873bfe000f (patch)
tree7bd7310269b2bec5bdaf379ed88f87d8de1d53cd
parentef54a7161c6d29bf1aaf20b46e5db8752be3b2db (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.java13
-rw-r--r--services/core/java/com/android/server/wm/Transition.java9
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;