diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowOrganizerController.java | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/wm/WindowOrganizerController.java b/services/core/java/com/android/server/wm/WindowOrganizerController.java index be0f6db24923..c367b622b741 100644 --- a/services/core/java/com/android/server/wm/WindowOrganizerController.java +++ b/services/core/java/com/android/server/wm/WindowOrganizerController.java @@ -309,6 +309,14 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub applyTransaction(wct, -1 /* syncId */, nextTransition, caller, deferred); if (needsSetReady) { + // TODO(b/294925498): Remove this once we have accurate ready + // tracking. + if (hasActivityLaunch(wct) && !mService.mRootWindowContainer + .allPausedActivitiesComplete()) { + // WCT is launching an activity, so we need to wait for its + // lifecycle events. + return; + } nextTransition.setAllReady(); } }); @@ -344,6 +352,15 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub } } + private static boolean hasActivityLaunch(WindowContainerTransaction wct) { + for (int i = 0; i < wct.getHierarchyOps().size(); ++i) { + if (wct.getHierarchyOps().get(i).getType() == HIERARCHY_OP_TYPE_LAUNCH_TASK) { + return true; + } + } + return false; + } + @Override public int startLegacyTransition(int type, @NonNull RemoteAnimationAdapter adapter, @NonNull IWindowContainerTransactionCallback callback, |