diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java index 33c0fe13af11f..f42df02a62523 100644 --- a/services/core/java/com/android/server/wm/WindowContainer.java +++ b/services/core/java/com/android/server/wm/WindowContainer.java @@ -3756,6 +3756,15 @@ class WindowContainer extends ConfigurationContainer< * hierarchy change implies a configuration change. */ private void onSyncReparent(WindowContainer oldParent, WindowContainer newParent) { + // Check if this is changing displays. If so, mark the old display as "ready" for + // transitions. This is to work around the problem where setting readiness against this + // container will only set the new display as ready and leave the old display as unready. + if (mSyncState != SYNC_STATE_NONE && oldParent != null + && oldParent.getDisplayContent() != null && (newParent == null + || oldParent.getDisplayContent() != newParent.getDisplayContent())) { + mTransitionController.setReady(oldParent.getDisplayContent()); + } + if (newParent == null || newParent.mSyncState == SYNC_STATE_NONE) { if (mSyncState == SYNC_STATE_NONE) { return;