summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Rachit Jain <jainrachit@google.com> 2024-06-24 23:58:31 +0000
committer Rachit Jain <jainrachit@google.com> 2024-06-25 20:32:38 +0000
commit43b2500a97505c5b56e94c47c57c419d06be863b (patch)
tree56e87696ad7f0767b3f48ab8b68a83a78f810248
parent672d707f3b4ff39373c5c43867eb9f3d9191eac3 (diff)
Shell transitions not received when activity already open on another display
- Add condition to not abort the transition when the task has some change which is yet to be applied. - Example - Display change in this case such as an activity that is already open on display 1 (distant display) and the activity is opened on display 2 (default display) Flag: NONE (bugfix) Bug: 349196013 Test: m Test: Open Youtube when it is already open on the distant display and verify if the shell transitions are received or not. Change-Id: Ib4949721eb77fb96eaa19e210f97b44163d4e4a5
-rw-r--r--services/core/java/com/android/server/wm/ActivityStarter.java4
-rw-r--r--services/core/java/com/android/server/wm/Transition.java6
2 files changed, 9 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java
index e9c08e0ac29d..717c3998aba4 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -1649,7 +1649,8 @@ class ActivityStarter {
// activity, so this isn't just deliver-to-top
&& mMovedToTopActivity == null
&& !transitionController.hasOrderChanges()
- && !transitionController.isTransientHide(startedActivityRootTask)) {
+ && !transitionController.isTransientHide(startedActivityRootTask)
+ && !newTransition.hasChanged(mLastStartActivityRecord)) {
// We just delivered to top, so there isn't an actual transition here.
if (!forceTransientTransition) {
newTransition.abort();
@@ -1792,6 +1793,7 @@ class ActivityStarter {
activity.destroyIfPossible("Removes redundant singleInstance");
}
}
+ targetTaskTop.mTransitionController.collect(targetTaskTop);
recordTransientLaunchIfNeeded(targetTaskTop);
// Recycle the target task for this launch.
startResult =
diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java
index a029f38de128..a0d65f30ccb1 100644
--- a/services/core/java/com/android/server/wm/Transition.java
+++ b/services/core/java/com/android/server/wm/Transition.java
@@ -3230,6 +3230,12 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
Trace.asyncTraceForTrackEnd(Trace.TRACE_TAG_WINDOW_MANAGER, TAG, cookie);
}
+ boolean hasChanged(WindowContainer wc) {
+ final ChangeInfo chg = mChanges.get(wc);
+ if (chg == null) return false;
+ return chg.hasChanged();
+ }
+
@VisibleForTesting
static class ChangeInfo {
private static final int FLAG_NONE = 0;