Merge "Fix black screen after moving top activity to another display" into sc-dev

This commit is contained in:
TreeHugger Robot
2021-07-08 04:14:32 +00:00
committed by Android (Google) Code Review
4 changed files with 7 additions and 11 deletions

View File

@@ -353,7 +353,7 @@ public class DisplayAreaOrganizerController extends IDisplayAreaOrganizerControl
// Only update focus/visibility for the last one because there may be many root tasks are
// reparented and the intermediate states are unnecessary.
if (lastReparentedRootTask != null) {
lastReparentedRootTask.postReparent();
lastReparentedRootTask.resumeNextFocusAfterReparent();
}
}
}

View File

@@ -5683,7 +5683,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
// Only update focus/visibility for the last one because there may be many root tasks are
// reparented and the intermediate states are unnecessary.
if (lastReparentedRootTask != null) {
lastReparentedRootTask.postReparent();
lastReparentedRootTask.resumeNextFocusAfterReparent();
}
releaseSelfIfNeeded();
mDisplayPolicy.release();

View File

@@ -66,7 +66,6 @@ import static com.android.server.wm.ActivityTaskSupervisor.ON_TOP;
import static com.android.server.wm.ActivityTaskSupervisor.PRESERVE_WINDOWS;
import static com.android.server.wm.ActivityTaskSupervisor.dumpHistoryList;
import static com.android.server.wm.ActivityTaskSupervisor.printThisActivity;
import static com.android.server.wm.RecentsAnimationController.REORDER_KEEP_IN_PLACE;
import static com.android.server.wm.RootWindowContainerProto.IS_HOME_RECENTS_COMPONENT;
import static com.android.server.wm.RootWindowContainerProto.KEYGUARD_CONTROLLER;
import static com.android.server.wm.RootWindowContainerProto.WINDOW_CONTAINER;
@@ -2077,6 +2076,10 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
+ " to its current taskDisplayArea=" + taskDisplayArea);
}
rootTask.reparent(taskDisplayArea, onTop);
// Resume focusable root task after reparenting to another display area.
rootTask.resumeNextFocusAfterReparent();
// TODO(multi-display): resize rootTasks properly if moved from split-screen.
}

View File

@@ -1464,12 +1464,6 @@ class Task extends WindowContainer<WindowContainer> {
adjustBoundsForDisplayChangeIfNeeded(getDisplayContent());
mRootWindowContainer.updateUIDsPresentOnDisplay();
// Resume next focusable root task after reparenting to another display if we aren't
// removing the prevous display.
if (oldDisplay != null && oldDisplay.isRemoving()) {
postReparent();
}
}
void cleanUpActivityReferences(ActivityRecord r) {
@@ -5462,8 +5456,7 @@ class Task extends WindowContainer<WindowContainer> {
mRootWindowContainer.resumeFocusedTasksTopActivities();
}
/** Resume next focusable root task after reparenting to another display. */
void postReparent() {
void resumeNextFocusAfterReparent() {
adjustFocusToNextFocusableTask("reparent", true /* allowFocusSelf */,
true /* moveDisplayToTop */);
mRootWindowContainer.resumeFocusedTasksTopActivities();