Merge "Fix black screen after moving top activity to another display" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
4c0806317a
@@ -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
|
// Only update focus/visibility for the last one because there may be many root tasks are
|
||||||
// reparented and the intermediate states are unnecessary.
|
// reparented and the intermediate states are unnecessary.
|
||||||
if (lastReparentedRootTask != null) {
|
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
|
// Only update focus/visibility for the last one because there may be many root tasks are
|
||||||
// reparented and the intermediate states are unnecessary.
|
// reparented and the intermediate states are unnecessary.
|
||||||
if (lastReparentedRootTask != null) {
|
if (lastReparentedRootTask != null) {
|
||||||
lastReparentedRootTask.postReparent();
|
lastReparentedRootTask.resumeNextFocusAfterReparent();
|
||||||
}
|
}
|
||||||
releaseSelfIfNeeded();
|
releaseSelfIfNeeded();
|
||||||
mDisplayPolicy.release();
|
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.PRESERVE_WINDOWS;
|
||||||
import static com.android.server.wm.ActivityTaskSupervisor.dumpHistoryList;
|
import static com.android.server.wm.ActivityTaskSupervisor.dumpHistoryList;
|
||||||
import static com.android.server.wm.ActivityTaskSupervisor.printThisActivity;
|
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.IS_HOME_RECENTS_COMPONENT;
|
||||||
import static com.android.server.wm.RootWindowContainerProto.KEYGUARD_CONTROLLER;
|
import static com.android.server.wm.RootWindowContainerProto.KEYGUARD_CONTROLLER;
|
||||||
import static com.android.server.wm.RootWindowContainerProto.WINDOW_CONTAINER;
|
import static com.android.server.wm.RootWindowContainerProto.WINDOW_CONTAINER;
|
||||||
@@ -2077,6 +2076,10 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
|
|||||||
+ " to its current taskDisplayArea=" + taskDisplayArea);
|
+ " to its current taskDisplayArea=" + taskDisplayArea);
|
||||||
}
|
}
|
||||||
rootTask.reparent(taskDisplayArea, onTop);
|
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.
|
// TODO(multi-display): resize rootTasks properly if moved from split-screen.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1464,12 +1464,6 @@ class Task extends WindowContainer<WindowContainer> {
|
|||||||
adjustBoundsForDisplayChangeIfNeeded(getDisplayContent());
|
adjustBoundsForDisplayChangeIfNeeded(getDisplayContent());
|
||||||
|
|
||||||
mRootWindowContainer.updateUIDsPresentOnDisplay();
|
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) {
|
void cleanUpActivityReferences(ActivityRecord r) {
|
||||||
@@ -5462,8 +5456,7 @@ class Task extends WindowContainer<WindowContainer> {
|
|||||||
mRootWindowContainer.resumeFocusedTasksTopActivities();
|
mRootWindowContainer.resumeFocusedTasksTopActivities();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Resume next focusable root task after reparenting to another display. */
|
void resumeNextFocusAfterReparent() {
|
||||||
void postReparent() {
|
|
||||||
adjustFocusToNextFocusableTask("reparent", true /* allowFocusSelf */,
|
adjustFocusToNextFocusableTask("reparent", true /* allowFocusSelf */,
|
||||||
true /* moveDisplayToTop */);
|
true /* moveDisplayToTop */);
|
||||||
mRootWindowContainer.resumeFocusedTasksTopActivities();
|
mRootWindowContainer.resumeFocusedTasksTopActivities();
|
||||||
|
|||||||
Reference in New Issue
Block a user