diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java index ad4594873cf0c..155db2c586542 100644 --- a/services/core/java/com/android/server/wm/Transition.java +++ b/services/core/java/com/android/server/wm/Transition.java @@ -1082,6 +1082,10 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe for (WindowContainer p = wc.getParent(); p != null; p = p.getParent()) { final ChangeInfo parentChange = changes.get(p); if (parentChange == null || !parentChange.hasChanged(p)) break; + if (p.mRemoteToken == null) { + // Intermediate parents must be those that has window to be managed by Shell. + continue; + } if (parentChange.mParent != null && !skipIntermediateReports) { changes.get(wc).mParent = p; // The chain above the parent was processed. diff --git a/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java b/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java index fd523f0585c78..ba414075e4f16 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java @@ -739,6 +739,9 @@ public class TransitionTests extends WindowTestsBase { } from = from.getParent(); } + if (end.asDisplayArea() != null) { + end.asDisplayArea().mOrganizer = organizer; + } } /** Fill the change map with all the parents of top. Change maps are usually fully populated */