diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index eba337594f26c..f6dce3b6ab1e1 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -6908,11 +6908,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A * {@link android.view.Display#INVALID_DISPLAY} if not attached. */ int getDisplayId() { - final Task rootTask = getRootTask(); - if (rootTask == null) { - return INVALID_DISPLAY; - } - return rootTask.getDisplayId(); + return task != null && task.mDisplayContent != null + ? task.mDisplayContent.mDisplayId : INVALID_DISPLAY; } final boolean isDestroyable() { diff --git a/services/core/java/com/android/server/wm/DisplayArea.java b/services/core/java/com/android/server/wm/DisplayArea.java index b84b2d8805dee..bedeabeb6141f 100644 --- a/services/core/java/com/android/server/wm/DisplayArea.java +++ b/services/core/java/com/android/server/wm/DisplayArea.java @@ -368,6 +368,55 @@ public class DisplayArea extends WindowContainer { return null; } + @Override + ActivityRecord getActivity(Predicate callback, boolean traverseTopToBottom, + ActivityRecord boundary) { + if (mType == Type.ABOVE_TASKS || mType == Type.BELOW_TASKS) { + return null; + } + return super.getActivity(callback, traverseTopToBottom, boundary); + } + + @Override + Task getTask(Predicate callback, boolean traverseTopToBottom) { + if (mType == Type.ABOVE_TASKS || mType == Type.BELOW_TASKS) { + return null; + } + return super.getTask(callback, traverseTopToBottom); + } + + @Override + boolean forAllActivities(Predicate callback, boolean traverseTopToBottom) { + if (mType == Type.ABOVE_TASKS || mType == Type.BELOW_TASKS) { + return false; + } + return super.forAllActivities(callback, traverseTopToBottom); + } + + @Override + boolean forAllRootTasks(Predicate callback, boolean traverseTopToBottom) { + if (mType == Type.ABOVE_TASKS || mType == Type.BELOW_TASKS) { + return false; + } + return super.forAllRootTasks(callback, traverseTopToBottom); + } + + @Override + boolean forAllTasks(Predicate callback) { + if (mType == Type.ABOVE_TASKS || mType == Type.BELOW_TASKS) { + return false; + } + return super.forAllTasks(callback); + } + + @Override + boolean forAllLeafTasks(Predicate callback) { + if (mType == Type.ABOVE_TASKS || mType == Type.BELOW_TASKS) { + return false; + } + return super.forAllLeafTasks(callback); + } + @Override void forAllDisplayAreas(Consumer callback) { super.forAllDisplayAreas(callback);