Merge "Fix black screen after moving top activity to another display" into sc-dev am: 4c0806317a
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15226381 Change-Id: Ie17e003aae8dd91770a2dc47b4a744db97703c3d
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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.
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user