Merge "Remove some duplicated code of transient launch" into udc-dev
diff --git a/services/core/java/com/android/server/wm/AbsAppSnapshotController.java b/services/core/java/com/android/server/wm/AbsAppSnapshotController.java
index 83804f7..32f7b96 100644
--- a/services/core/java/com/android/server/wm/AbsAppSnapshotController.java
+++ b/services/core/java/com/android/server/wm/AbsAppSnapshotController.java
@@ -466,8 +466,7 @@
}
boolean isAnimatingByRecents(@NonNull Task task) {
- return task.isAnimatingByRecents()
- || mService.mAtmService.getTransitionController().inRecentsTransition(task);
+ return task.isAnimatingByRecents();
}
void dump(PrintWriter pw, String prefix) {
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index f5d4a84..1bcc05e 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -3544,8 +3544,7 @@
// the best capture timing (e.g. IME window capture),
// No need additional task capture while task is controlled by RecentsAnimation.
if (mAtmService.mWindowManager.mTaskSnapshotController != null
- && !(task.isAnimatingByRecents()
- || mTransitionController.inRecentsTransition(task))) {
+ && !task.isAnimatingByRecents()) {
final ArraySet<Task> tasks = Sets.newArraySet(task);
mAtmService.mWindowManager.mTaskSnapshotController.snapshotTasks(tasks);
mAtmService.mWindowManager.mTaskSnapshotController
diff --git a/services/core/java/com/android/server/wm/ActivityStartController.java b/services/core/java/com/android/server/wm/ActivityStartController.java
index 7c1e907..bfe2986 100644
--- a/services/core/java/com/android/server/wm/ActivityStartController.java
+++ b/services/core/java/com/android/server/wm/ActivityStartController.java
@@ -577,7 +577,6 @@
final Transition transition = controller.getCollectingTransition();
if (transition != null) {
transition.setRemoteAnimationApp(r.app.getThread());
- controller.collect(task);
controller.setTransientLaunch(r, TaskDisplayArea.getRootTaskAbove(rootTask));
}
task.moveToFront("startExistingRecents");
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java
index 38f13ec..c5e75fa 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -2548,6 +2548,7 @@
mAvoidMoveToFront = false;
mFrozeTaskList = false;
mTransientLaunch = false;
+ mPriorAboveTask = null;
mDisplayLockAndOccluded = false;
mVoiceSession = null;
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 73f4b5b..fb592e1 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -3006,7 +3006,8 @@
/** Checking if self or its child tasks are animated by recents animation. */
boolean isAnimatingByRecents() {
- return isAnimating(CHILDREN, ANIMATION_TYPE_RECENTS);
+ return isAnimating(CHILDREN, ANIMATION_TYPE_RECENTS)
+ || mTransitionController.isTransientHide(this);
}
WindowState getTopVisibleAppMainWindow() {
diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java
index c35def2..3a909ce 100644
--- a/services/core/java/com/android/server/wm/Transition.java
+++ b/services/core/java/com/android/server/wm/Transition.java
@@ -109,7 +109,7 @@
*/
class Transition implements BLASTSyncEngine.TransactionReadyListener {
private static final String TAG = "Transition";
- private static final String TRACE_NAME_PLAY_TRANSITION = "PlayTransition";
+ private static final String TRACE_NAME_PLAY_TRANSITION = "playing";
/** The default package for resources */
private static final String DEFAULT_PACKAGE = "android";
@@ -883,8 +883,7 @@
*/
void finishTransition() {
if (Trace.isTagEnabled(TRACE_TAG_WINDOW_MANAGER) && mIsPlayerEnabled) {
- Trace.asyncTraceEnd(TRACE_TAG_WINDOW_MANAGER, TRACE_NAME_PLAY_TRANSITION,
- System.identityHashCode(this));
+ asyncTraceEnd(System.identityHashCode(this));
}
mLogger.mFinishTimeNs = SystemClock.elapsedRealtimeNanos();
mController.mLoggerHandler.post(mLogger::logOnFinish);
@@ -1335,8 +1334,7 @@
mController.getTransitionPlayer().onTransitionReady(
mToken, info, transaction, mFinishTransaction);
if (Trace.isTagEnabled(TRACE_TAG_WINDOW_MANAGER)) {
- Trace.asyncTraceBegin(TRACE_TAG_WINDOW_MANAGER, TRACE_NAME_PLAY_TRANSITION,
- System.identityHashCode(this));
+ asyncTraceBegin(TRACE_NAME_PLAY_TRANSITION, System.identityHashCode(this));
}
} catch (RemoteException e) {
// If there's an exception when trying to send the mergedTransaction to the
@@ -2323,6 +2321,14 @@
return isCollecting() && mSyncId >= 0;
}
+ static void asyncTraceBegin(@NonNull String name, int cookie) {
+ Trace.asyncTraceForTrackBegin(Trace.TRACE_TAG_WINDOW_MANAGER, TAG, name, cookie);
+ }
+
+ static void asyncTraceEnd(int cookie) {
+ Trace.asyncTraceForTrackEnd(Trace.TRACE_TAG_WINDOW_MANAGER, TAG, cookie);
+ }
+
@VisibleForTesting
static class ChangeInfo {
private static final int FLAG_NONE = 0;
diff --git a/services/core/java/com/android/server/wm/TransitionController.java b/services/core/java/com/android/server/wm/TransitionController.java
index 8d56607..3bf8969 100644
--- a/services/core/java/com/android/server/wm/TransitionController.java
+++ b/services/core/java/com/android/server/wm/TransitionController.java
@@ -37,7 +37,6 @@
import android.os.RemoteException;
import android.os.SystemClock;
import android.os.SystemProperties;
-import android.os.Trace;
import android.util.ArrayMap;
import android.util.Slog;
import android.util.TimeUtils;
@@ -334,28 +333,6 @@
return inCollectingTransition(wc) || inPlayingTransition(wc);
}
- boolean inRecentsTransition(@NonNull WindowContainer wc) {
- for (WindowContainer p = wc; p != null; p = p.getParent()) {
- // TODO(b/221417431): replace this with deterministic snapshots
- if (mCollectingTransition == null) break;
- if ((mCollectingTransition.getFlags() & TRANSIT_FLAG_IS_RECENTS) != 0
- && mCollectingTransition.mParticipants.contains(wc)) {
- return true;
- }
- }
-
- for (int i = mPlayingTransitions.size() - 1; i >= 0; --i) {
- for (WindowContainer p = wc; p != null; p = p.getParent()) {
- // TODO(b/221417431): replace this with deterministic snapshots
- if ((mPlayingTransitions.get(i).getFlags() & TRANSIT_FLAG_IS_RECENTS) != 0
- && mPlayingTransitions.get(i).mParticipants.contains(p)) {
- return true;
- }
- }
- }
- return false;
- }
-
/** @return {@code true} if wc is in a participant subtree */
boolean isTransitionOnDisplay(@NonNull DisplayContent dc) {
if (mCollectingTransition != null && mCollectingTransition.isOnDisplay(dc)) {
@@ -773,12 +750,12 @@
// happening in app), so pause task snapshot persisting to not increase the load.
mAtm.mWindowManager.mSnapshotController.setPause(true);
mAnimatingState = true;
- Trace.asyncTraceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "transitAnim", 0);
+ Transition.asyncTraceBegin("animating", 0x41bfaf1 /* hashcode of TAG */);
} else if (!animatingState && mAnimatingState) {
t.setEarlyWakeupEnd();
mAtm.mWindowManager.mSnapshotController.setPause(false);
mAnimatingState = false;
- Trace.asyncTraceEnd(Trace.TRACE_TAG_WINDOW_MANAGER, "transitAnim", 0);
+ Transition.asyncTraceEnd(0x41bfaf1 /* hashcode of TAG */);
}
}