Merge "Switched RootWindowContainer to use WindowContainer."
diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java
index 2ae4b2a..1a397ff 100644
--- a/services/core/java/com/android/server/wm/AppWindowToken.java
+++ b/services/core/java/com/android/server/wm/AppWindowToken.java
@@ -1055,7 +1055,7 @@
@Override
void updateAllDrawn(int displayId) {
- final DisplayContent displayContent = mService.mRoot.getDisplayContent(displayId);
+ final DisplayContent displayContent = mService.mRoot.getDisplayContentOrCreate(displayId);
if (!allDrawn) {
final int numInteresting = numInterestingWindows;
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 54e3058..0ff30e2 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -485,8 +485,6 @@
void removeImmediately() {
super.removeImmediately();
if (DEBUG_DISPLAY) Slog.v(TAG_WM, "Removing display=" + this);
- // TODO: remove this line once RootWindowContainer is online.
- mService.mRoot.mDisplayContents.delete(mDisplayId);
mDimLayerController.close();
if (mDisplayId == Display.DEFAULT_DISPLAY) {
mService.unregisterPointerEventListener(mTapDetector);
diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java
index d119fb7a..8de267c 100644
--- a/services/core/java/com/android/server/wm/RootWindowContainer.java
+++ b/services/core/java/com/android/server/wm/RootWindowContainer.java
@@ -96,14 +96,11 @@
/** Root {@link WindowContainer} for the device. */
// TODO: Several methods in here are accessing children of this container's children through various
// references (WindowList I am looking at you :/). See if we can delegate instead.
-class RootWindowContainer {
+class RootWindowContainer extends WindowContainer<DisplayContent> {
private static final String TAG = TAG_WITH_CLASS_NAME ? "RootWindowContainer" : TAG_WM;
WindowManagerService mService;
- /** All DisplayContents in the world, kept here */
- SparseArray<DisplayContent> mDisplayContents = new SparseArray<>(2);
-
private boolean mWallpaperForceHidingChanged = false;
private Object mLastWindowFreezeSource = null;
private Session mHoldScreen = null;
@@ -148,9 +145,9 @@
}
WindowState computeFocusedWindow() {
- final int count = mDisplayContents.size();
+ final int count = mChildren.size();
for (int i = 0; i < count; i++) {
- final DisplayContent dc = mDisplayContents.valueAt(i);
+ final DisplayContent dc = mChildren.get(i);
final WindowState win = dc.findFocusedWindow();
if (win != null) {
return win;
@@ -166,8 +163,9 @@
* @param displayId The display the caller is interested in.
* @return The DisplayContent associated with displayId or null if there is no Display for it.
*/
- DisplayContent getDisplayContent(final int displayId) {
- DisplayContent dc = mDisplayContents.get(displayId);
+ DisplayContent getDisplayContentOrCreate(int displayId) {
+ DisplayContent dc = getDisplayContent(displayId);
+
if (dc == null) {
final Display display = mService.mDisplayManager.getDisplay(displayId);
if (display != null) {
@@ -177,13 +175,24 @@
return dc;
}
- private DisplayContent createDisplayContent(final Display display) {
- DisplayContent displayContent = new DisplayContent(display, mService);
- final int displayId = display.getDisplayId();
- if (DEBUG_DISPLAY) Slog.v(TAG_WM, "Adding display=" + display);
- mDisplayContents.put(displayId, displayContent);
+ private DisplayContent getDisplayContent(int displayId) {
+ for (int i = mChildren.size() - 1; i >= 0; --i) {
+ final DisplayContent current = mChildren.get(i);
+ if (current.getDisplayId() == displayId) {
+ return current;
+ }
+ }
+ return null;
+ }
- final DisplayInfo displayInfo = displayContent.getDisplayInfo();
+ private DisplayContent createDisplayContent(final Display display) {
+ final DisplayContent dc = new DisplayContent(display, mService);
+ final int displayId = display.getDisplayId();
+
+ if (DEBUG_DISPLAY) Slog.v(TAG_WM, "Adding display=" + display);
+ addChild(dc, null);
+
+ final DisplayInfo displayInfo = dc.getDisplayInfo();
final Rect rect = new Rect();
mService.mDisplaySettings.getOverscanLocked(displayInfo.name, displayInfo.uniqueId, rect);
displayInfo.overscanLeft = rect.left;
@@ -193,23 +202,23 @@
if (mService.mDisplayManagerInternal != null) {
mService.mDisplayManagerInternal.setDisplayInfoOverrideFromWindowManager(
displayId, displayInfo);
- mService.configureDisplayPolicyLocked(displayContent);
+ mService.configureDisplayPolicyLocked(dc);
// TODO(multi-display): Create an input channel for each display with touch capability.
if (displayId == Display.DEFAULT_DISPLAY) {
- displayContent.mTapDetector = new TaskTapPointerEventListener(
- mService, displayContent);
- mService.registerPointerEventListener(displayContent.mTapDetector);
+ dc.mTapDetector = new TaskTapPointerEventListener(
+ mService, dc);
+ mService.registerPointerEventListener(dc.mTapDetector);
mService.registerPointerEventListener(mService.mMousePositionTracker);
}
}
- return displayContent;
+ return dc;
}
/** Adds the input stack id to the input display id and returns the bounds of the added stack.*/
Rect addStackToDisplay(int stackId, int displayId, boolean onTop) {
- final DisplayContent dc = mDisplayContents.get(displayId);
+ final DisplayContent dc = getDisplayContent(displayId);
if (dc == null) {
Slog.w(TAG_WM, "addStackToDisplay: Trying to add stackId=" + stackId
+ " to unknown displayId=" + displayId + " callers=" + Debug.getCallers(6));
@@ -249,9 +258,9 @@
}
boolean layoutNeeded() {
- final int numDisplays = mDisplayContents.size();
+ final int numDisplays = mChildren.size();
for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
- final DisplayContent displayContent = mDisplayContents.valueAt(displayNdx);
+ final DisplayContent displayContent = mChildren.get(displayNdx);
if (displayContent.layoutNeeded) {
return true;
}
@@ -260,17 +269,17 @@
}
void getWindows(WindowList output) {
- final int count = mDisplayContents.size();
+ final int count = mChildren.size();
for (int i = 0; i < count; ++i) {
- final DisplayContent dc = mDisplayContents.valueAt(i);
+ final DisplayContent dc = mChildren.get(i);
output.addAll(dc.getWindowList());
}
}
void getWindows(WindowList output, boolean visibleOnly, boolean appsOnly) {
- final int numDisplays = mDisplayContents.size();
+ final int numDisplays = mChildren.size();
for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
- final WindowList windowList = mDisplayContents.valueAt(displayNdx).getWindowList();
+ final WindowList windowList = mChildren.get(displayNdx).getWindowList();
for (int winNdx = windowList.size() - 1; winNdx >= 0; --winNdx) {
final WindowState w = windowList.get(winNdx);
if ((!visibleOnly || w.mWinAnimator.getShown())
@@ -289,9 +298,9 @@
name = null;
} catch (RuntimeException e) {
}
- final int numDisplays = mDisplayContents.size();
+ final int numDisplays = mChildren.size();
for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
- final WindowList windowList = mDisplayContents.valueAt(displayNdx).getWindowList();
+ final WindowList windowList = mChildren.get(displayNdx).getWindowList();
for (int winNdx = windowList.size() - 1; winNdx >= 0; --winNdx) {
final WindowState w = windowList.get(winNdx);
if (name != null) {
@@ -306,9 +315,9 @@
}
WindowState findWindow(int hashCode) {
- final int numDisplays = mDisplayContents.size();
+ final int numDisplays = mChildren.size();
for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
- final WindowList windows = mDisplayContents.valueAt(displayNdx).getWindowList();
+ final WindowList windows = mChildren.get(displayNdx).getWindowList();
final int numWindows = windows.size();
for (int winNdx = 0; winNdx < numWindows; ++winNdx) {
final WindowState w = windows.get(winNdx);
@@ -323,9 +332,9 @@
// TODO: Users would have their own window containers under the display container?
void switchUser() {
- final int count = mDisplayContents.size();
+ final int count = mChildren.size();
for (int i = 0; i < count; ++i) {
- final DisplayContent dc = mDisplayContents.valueAt(i);
+ final DisplayContent dc = mChildren.get(i);
dc.switchUser();
}
}
@@ -338,24 +347,24 @@
mChangedStackList.clear();
- final int numDisplays = mDisplayContents.size();
- for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
- final DisplayContent displayContent = mDisplayContents.valueAt(displayNdx);
- displayContent.onConfigurationChanged(mChangedStackList);
+ final int numDisplays = mChildren.size();
+ for (int i = 0; i < numDisplays; ++i) {
+ final DisplayContent dc = mChildren.get(i);
+ dc.onConfigurationChanged(mChangedStackList);
}
return mChangedStackList.isEmpty() ? null : ArrayUtils.convertToIntArray(mChangedStackList);
}
private void prepareFreezingTaskBounds() {
- for (int i = mDisplayContents.size() - 1; i >= 0; i--) {
- mDisplayContents.valueAt(i).prepareFreezingTaskBounds();
+ for (int i = mChildren.size() - 1; i >= 0; i--) {
+ mChildren.get(i).prepareFreezingTaskBounds();
}
}
void setSecureSurfaceState(int userId, boolean disabled) {
- for (int i = mDisplayContents.size() - 1; i >= 0; --i) {
- final WindowList windows = mDisplayContents.valueAt(i).getWindowList();
+ for (int i = mChildren.size() - 1; i >= 0; --i) {
+ final WindowList windows = mChildren.get(i).getWindowList();
for (int winNdx = windows.size() - 1; winNdx >= 0; --winNdx) {
final WindowState win = windows.get(winNdx);
if (win.mHasSurface && userId == UserHandle.getUserId(win.mOwnerUid)) {
@@ -366,9 +375,9 @@
}
void updateAppOpsState() {
- final int count = mDisplayContents.size();
+ final int count = mChildren.size();
for (int i = 0; i < count; ++i) {
- final WindowList windows = mDisplayContents.valueAt(i).getWindowList();
+ final WindowList windows = mChildren.get(i).getWindowList();
final int numWindows = windows.size();
for (int winNdx = 0; winNdx < numWindows; ++winNdx) {
final WindowState win = windows.get(winNdx);
@@ -384,9 +393,9 @@
}
boolean canShowStrictModeViolation(int pid) {
- final int count = mDisplayContents.size();
+ final int count = mChildren.size();
for (int i = 0; i < count; ++i) {
- final WindowList windows = mDisplayContents.valueAt(i).getWindowList();
+ final WindowList windows = mChildren.get(i).getWindowList();
final int numWindows = windows.size();
for (int winNdx = 0; winNdx < numWindows; ++winNdx) {
final WindowState ws = windows.get(winNdx);
@@ -399,9 +408,9 @@
}
void closeSystemDialogs(String reason) {
- final int count = mDisplayContents.size();
+ final int count = mChildren.size();
for (int i = 0; i < count; ++i) {
- final WindowList windows = mDisplayContents.valueAt(i).getWindowList();
+ final WindowList windows = mChildren.get(i).getWindowList();
final int numWindows = windows.size();
for (int j = 0; j < numWindows; ++j) {
final WindowState w = windows.get(j);
@@ -419,8 +428,8 @@
if (SHOW_TRANSACTIONS) Slog.i(TAG, ">>> OPEN TRANSACTION removeReplacedWindows");
mService.openSurfaceTransaction();
try {
- for (int i = mDisplayContents.size() - 1; i >= 0; i--) {
- DisplayContent dc = mDisplayContents.valueAt(i);
+ for (int i = mChildren.size() - 1; i >= 0; i--) {
+ DisplayContent dc = mChildren.get(i);
final WindowList windows = dc.getWindowList();
for (int j = windows.size() - 1; j >= 0; j--) {
final WindowState win = windows.get(j);
@@ -439,9 +448,9 @@
boolean hasPendingLayoutChanges(WindowAnimator animator) {
boolean hasChanges = false;
- final int count = mDisplayContents.size();
+ final int count = mChildren.size();
for (int i = 0; i < count; ++i) {
- final DisplayContent dc = mDisplayContents.valueAt(i);
+ final DisplayContent dc = mChildren.get(i);
final int pendingChanges = animator.getPendingLayoutChanges(dc.getDisplayId());
if ((pendingChanges & FINISH_LAYOUT_REDO_WALLPAPER) != 0) {
animator.mBulkUpdateParams |= SET_WALLPAPER_ACTION_PENDING;
@@ -460,9 +469,9 @@
final WallpaperController wallpaperController = mService.mWallpaperControllerLocked;
boolean disableWallpaperTouchEvents = false;
- final int count = mDisplayContents.size();
+ final int count = mChildren.size();
for (int i = 0; i < count; ++i) {
- final DisplayContent dc = mDisplayContents.valueAt(i);
+ final DisplayContent dc = mChildren.get(i);
final WindowList windows = dc.getWindowList();
for (int winNdx = windows.size() - 1; winNdx >= 0; --winNdx) {
final WindowState child = windows.get(winNdx);
@@ -537,9 +546,9 @@
// we haven't left any dangling surfaces around.
Slog.i(TAG_WM, "Out of memory for surface! Looking for leaks...");
- final int numDisplays = mDisplayContents.size();
+ final int numDisplays = mChildren.size();
for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
- final WindowList windows = mDisplayContents.valueAt(displayNdx).getWindowList();
+ final WindowList windows = mChildren.get(displayNdx).getWindowList();
final int numWindows = windows.size();
for (int winNdx = 0; winNdx < numWindows; ++winNdx) {
final WindowState ws = windows.get(winNdx);
@@ -572,7 +581,7 @@
Slog.w(TAG_WM, "No leaked surfaces; killing applications!");
SparseIntArray pidCandidates = new SparseIntArray();
for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
- final WindowList windows = mDisplayContents.valueAt(displayNdx).getWindowList();
+ final WindowList windows = mChildren.get(displayNdx).getWindowList();
final int numWindows = windows.size();
for (int winNdx = 0; winNdx < numWindows; ++winNdx) {
final WindowState ws = windows.get(winNdx);
@@ -639,9 +648,9 @@
}
// Initialize state of exiting tokens.
- final int numDisplays = mDisplayContents.size();
+ final int numDisplays = mChildren.size();
for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
- final DisplayContent displayContent = mDisplayContents.valueAt(displayNdx);
+ final DisplayContent displayContent = mChildren.get(displayNdx);
for (i = displayContent.mExitingTokens.size() - 1; i >= 0; i--) {
displayContent.mExitingTokens.get(i).hasVisible = false;
}
@@ -788,7 +797,7 @@
// Time to remove any exiting tokens?
for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
- final DisplayContent displayContent = mDisplayContents.valueAt(displayNdx);
+ final DisplayContent displayContent = mChildren.get(displayNdx);
ArrayList<WindowToken> exitingTokens = displayContent.mExitingTokens;
for (i = exitingTokens.size() - 1; i >= 0; i--) {
WindowToken token = exitingTokens.get(i);
@@ -827,7 +836,7 @@
}
for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
- final DisplayContent displayContent = mDisplayContents.valueAt(displayNdx);
+ final DisplayContent displayContent = mChildren.get(displayNdx);
if (displayContent.pendingLayoutChanges != 0) {
displayContent.layoutNeeded = true;
}
@@ -913,8 +922,8 @@
}
// Remove all deferred displays stacks, tasks, and activities.
- for (int displayNdx = mDisplayContents.size() - 1; displayNdx >= 0; --displayNdx) {
- mDisplayContents.valueAt(displayNdx).checkCompleteDeferredRemoval();
+ for (int displayNdx = mChildren.size() - 1; displayNdx >= 0; --displayNdx) {
+ mChildren.get(displayNdx).checkCompleteDeferredRemoval();
}
if (updateInputWindowsNeeded) {
@@ -954,9 +963,9 @@
boolean focusDisplayed = false;
- final int count = mDisplayContents.size();
+ final int count = mChildren.size();
for (int j = 0; j < count; ++j) {
- final DisplayContent dc = mDisplayContents.valueAt(j);
+ final DisplayContent dc = mChildren.get(j);
boolean updateAllDrawn = false;
WindowList windows = dc.getWindowList();
DisplayInfo displayInfo = dc.getDisplayInfo();
@@ -1359,8 +1368,8 @@
mSurfaceTraceEnabled = true;
mRemoteEventTrace = new RemoteEventTrace(mService, fd);
mSurfaceTraceFd = pfd;
- for (int displayNdx = mDisplayContents.size() - 1; displayNdx >= 0; --displayNdx) {
- DisplayContent dc = mDisplayContents.valueAt(displayNdx);
+ for (int displayNdx = mChildren.size() - 1; displayNdx >= 0; --displayNdx) {
+ final DisplayContent dc = mChildren.get(displayNdx);
dc.enableSurfaceTrace(fd);
}
}
@@ -1369,8 +1378,8 @@
mSurfaceTraceEnabled = false;
mRemoteEventTrace = null;
mSurfaceTraceFd = null;
- for (int displayNdx = mDisplayContents.size() - 1; displayNdx >= 0; --displayNdx) {
- DisplayContent dc = mDisplayContents.valueAt(displayNdx);
+ for (int displayNdx = mChildren.size() - 1; displayNdx >= 0; --displayNdx) {
+ final DisplayContent dc = mChildren.get(displayNdx);
dc.disableSurfaceTrace();
}
}
@@ -1378,9 +1387,9 @@
void dumpDisplayContents(PrintWriter pw) {
pw.println("WINDOW MANAGER DISPLAY CONTENTS (dumpsys window displays)");
if (mService.mDisplayReady) {
- final int count = mDisplayContents.size();
+ final int count = mChildren.size();
for (int i = 0; i < count; ++i) {
- final DisplayContent displayContent = mDisplayContents.valueAt(i);
+ final DisplayContent displayContent = mChildren.get(i);
displayContent.dump(" ", pw);
}
} else {
@@ -1393,9 +1402,9 @@
return;
}
pw.print(" layoutNeeded on displays=");
- final int count = mDisplayContents.size();
+ final int count = mChildren.size();
for (int displayNdx = 0; displayNdx < count; ++displayNdx) {
- final DisplayContent displayContent = mDisplayContents.valueAt(displayNdx);
+ final DisplayContent displayContent = mChildren.get(displayNdx);
if (displayContent.layoutNeeded) {
pw.print(displayContent.getDisplayId());
}
@@ -1404,9 +1413,9 @@
}
void dumpWindowsNoHeader(PrintWriter pw, boolean dumpAll, ArrayList<WindowState> windows) {
- final int numDisplays = mDisplayContents.size();
+ final int numDisplays = mChildren.size();
for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
- final WindowList windowList = mDisplayContents.valueAt(displayNdx).getWindowList();
+ final WindowList windowList = mChildren.get(displayNdx).getWindowList();
for (int winNdx = windowList.size() - 1; winNdx >= 0; --winNdx) {
final WindowState w = windowList.get(winNdx);
if (windows == null || windows.contains(w)) {
diff --git a/services/core/java/com/android/server/wm/WindowAnimator.java b/services/core/java/com/android/server/wm/WindowAnimator.java
index 28b5424..fb6b09a 100644
--- a/services/core/java/com/android/server/wm/WindowAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowAnimator.java
@@ -40,7 +40,6 @@
import static com.android.server.wm.WindowSurfacePlacer.SET_FORCE_HIDING_CHANGED;
import static com.android.server.wm.WindowSurfacePlacer.SET_ORIENTATION_CHANGE_COMPLETE;
import static com.android.server.wm.WindowSurfacePlacer.SET_UPDATE_ROTATION;
-import static com.android.server.wm.WindowSurfacePlacer.SET_WALLPAPER_ACTION_PENDING;
import static com.android.server.wm.WindowSurfacePlacer.SET_WALLPAPER_MAY_CHANGE;
import android.content.Context;
@@ -528,7 +527,7 @@
}
private void updateWallpaperLocked(int displayId) {
- mService.mRoot.getDisplayContent(displayId).resetAnimationBackgroundAnimator();
+ mService.mRoot.getDisplayContentOrCreate(displayId).resetAnimationBackgroundAnimator();
final WindowList windows = mService.getWindowListLocked(displayId);
WindowState detachedWallpaper = null;
@@ -615,7 +614,8 @@
final int numDisplays = mDisplayContentsAnimators.size();
for (int i = 0; i < numDisplays; i++) {
final int displayId = mDisplayContentsAnimators.keyAt(i);
- final DisplayContent displayContent = mService.mRoot.getDisplayContent(displayId);
+ final DisplayContent displayContent = mService.mRoot.getDisplayContentOrCreate(
+ displayId);
displayContent.stepAppWindowsAnimation(mCurrentTime);
DisplayContentsAnimator displayAnimator = mDisplayContentsAnimators.valueAt(i);
@@ -654,7 +654,8 @@
for (int i = 0; i < numDisplays; i++) {
final int displayId = mDisplayContentsAnimators.keyAt(i);
- final DisplayContent displayContent = mService.mRoot.getDisplayContent(displayId);
+ final DisplayContent displayContent = mService.mRoot.getDisplayContentOrCreate(
+ displayId);
displayContent.checkAppWindowsReadyToShow();
@@ -799,7 +800,7 @@
if (displayId < 0) {
return 0;
}
- final DisplayContent displayContent = mService.mRoot.getDisplayContent(displayId);
+ final DisplayContent displayContent = mService.mRoot.getDisplayContentOrCreate(displayId);
return (displayContent != null) ? displayContent.pendingLayoutChanges : 0;
}
@@ -807,7 +808,7 @@
if (displayId < 0) {
return;
}
- final DisplayContent displayContent = mService.mRoot.getDisplayContent(displayId);
+ final DisplayContent displayContent = mService.mRoot.getDisplayContentOrCreate(displayId);
if (displayContent != null) {
displayContent.pendingLayoutChanges |= changes;
}
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 6e92c31..cd87fbd 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -1495,7 +1495,7 @@
throw new IllegalStateException("Display has not been initialialized");
}
- final DisplayContent displayContent = mRoot.getDisplayContent(displayId);
+ final DisplayContent displayContent = mRoot.getDisplayContentOrCreate(displayId);
if (displayContent == null) {
Slog.w(TAG_WM, "Attempted to add window to a display that does not exist: "
+ displayId + ". Aborting.");
@@ -5103,7 +5103,7 @@
boolean wallpaperOnly) {
final DisplayContent displayContent;
synchronized(mWindowMap) {
- displayContent = mRoot.getDisplayContent(displayId);
+ displayContent = mRoot.getDisplayContentOrCreate(displayId);
if (displayContent == null) {
if (DEBUG_SCREENSHOT) Slog.i(TAG_WM, "Screenshot of " + appToken
+ ": returning null. No Display for displayId=" + displayId);
@@ -6795,7 +6795,7 @@
private void displayReady(int displayId) {
synchronized(mWindowMap) {
- final DisplayContent displayContent = mRoot.getDisplayContent(displayId);
+ final DisplayContent displayContent = mRoot.getDisplayContentOrCreate(displayId);
if (displayContent != null) {
mAnimator.addDisplayLocked(displayId);
displayContent.initializeDisplayBaseInfo();
@@ -7636,7 +7636,7 @@
@Override
public void getInitialDisplaySize(int displayId, Point size) {
synchronized (mWindowMap) {
- final DisplayContent displayContent = mRoot.getDisplayContent(displayId);
+ final DisplayContent displayContent = mRoot.getDisplayContentOrCreate(displayId);
if (displayContent != null && displayContent.hasAccess(Binder.getCallingUid())) {
size.x = displayContent.mInitialDisplayWidth;
size.y = displayContent.mInitialDisplayHeight;
@@ -7647,7 +7647,7 @@
@Override
public void getBaseDisplaySize(int displayId, Point size) {
synchronized (mWindowMap) {
- final DisplayContent displayContent = mRoot.getDisplayContent(displayId);
+ final DisplayContent displayContent = mRoot.getDisplayContentOrCreate(displayId);
if (displayContent != null && displayContent.hasAccess(Binder.getCallingUid())) {
size.x = displayContent.mBaseDisplayWidth;
size.y = displayContent.mBaseDisplayHeight;
@@ -7674,7 +7674,7 @@
final int MIN_WIDTH = 200;
final int MIN_HEIGHT = 200;
final int MAX_SCALE = 2;
- final DisplayContent displayContent = mRoot.getDisplayContent(displayId);
+ final DisplayContent displayContent = mRoot.getDisplayContentOrCreate(displayId);
if (displayContent != null) {
width = Math.min(Math.max(width, MIN_WIDTH),
displayContent.mInitialDisplayWidth * MAX_SCALE);
@@ -7704,7 +7704,7 @@
final long ident = Binder.clearCallingIdentity();
try {
synchronized(mWindowMap) {
- final DisplayContent displayContent = mRoot.getDisplayContent(displayId);
+ final DisplayContent displayContent = mRoot.getDisplayContentOrCreate(displayId);
if (displayContent != null) {
if (mode < 0 || mode > 1) {
mode = 0;
@@ -7787,7 +7787,7 @@
final long ident = Binder.clearCallingIdentity();
try {
synchronized(mWindowMap) {
- final DisplayContent displayContent = mRoot.getDisplayContent(displayId);
+ final DisplayContent displayContent = mRoot.getDisplayContentOrCreate(displayId);
if (displayContent != null) {
setForcedDisplaySizeLocked(displayContent, displayContent.mInitialDisplayWidth,
displayContent.mInitialDisplayHeight);
@@ -7803,7 +7803,7 @@
@Override
public int getInitialDisplayDensity(int displayId) {
synchronized (mWindowMap) {
- final DisplayContent displayContent = mRoot.getDisplayContent(displayId);
+ final DisplayContent displayContent = mRoot.getDisplayContentOrCreate(displayId);
if (displayContent != null && displayContent.hasAccess(Binder.getCallingUid())) {
return displayContent.mInitialDisplayDensity;
}
@@ -7814,7 +7814,7 @@
@Override
public int getBaseDisplayDensity(int displayId) {
synchronized (mWindowMap) {
- final DisplayContent displayContent = mRoot.getDisplayContent(displayId);
+ final DisplayContent displayContent = mRoot.getDisplayContentOrCreate(displayId);
if (displayContent != null && displayContent.hasAccess(Binder.getCallingUid())) {
return displayContent.mBaseDisplayDensity;
}
@@ -7840,7 +7840,7 @@
final long ident = Binder.clearCallingIdentity();
try {
synchronized(mWindowMap) {
- final DisplayContent displayContent = mRoot.getDisplayContent(displayId);
+ final DisplayContent displayContent = mRoot.getDisplayContentOrCreate(displayId);
if (displayContent != null && mCurrentUserId == targetUserId) {
setForcedDisplayDensityLocked(displayContent, density);
}
@@ -7871,7 +7871,7 @@
final long ident = Binder.clearCallingIdentity();
try {
synchronized(mWindowMap) {
- final DisplayContent displayContent = mRoot.getDisplayContent(displayId);
+ final DisplayContent displayContent = mRoot.getDisplayContentOrCreate(displayId);
if (displayContent != null && mCurrentUserId == callingUserId) {
setForcedDisplayDensityLocked(displayContent,
displayContent.mInitialDisplayDensity);
@@ -7960,7 +7960,7 @@
final long ident = Binder.clearCallingIdentity();
try {
synchronized(mWindowMap) {
- DisplayContent displayContent = mRoot.getDisplayContent(displayId);
+ DisplayContent displayContent = mRoot.getDisplayContentOrCreate(displayId);
if (displayContent != null) {
setOverscanLocked(displayContent, left, top, right, bottom);
}
@@ -9270,12 +9270,12 @@
if (display == null) {
throw new IllegalArgumentException("getDisplayContent: display must not be null");
}
- mRoot.getDisplayContent(display.getDisplayId());
+ mRoot.getDisplayContentOrCreate(display.getDisplayId());
}
// There is an inherent assumption that this will never return null.
public DisplayContent getDefaultDisplayContentLocked() {
- return mRoot.getDisplayContent(Display.DEFAULT_DISPLAY);
+ return mRoot.getDisplayContentOrCreate(Display.DEFAULT_DISPLAY);
}
public WindowList getDefaultWindowListLocked() {
@@ -9292,7 +9292,7 @@
* @return The list of WindowStates on the screen, or null if the there is no screen.
*/
WindowList getWindowListLocked(final int displayId) {
- final DisplayContent displayContent = mRoot.getDisplayContent(displayId);
+ final DisplayContent displayContent = mRoot.getDisplayContentOrCreate(displayId);
return displayContent != null ? displayContent.getWindowList() : null;
}
@@ -9316,7 +9316,7 @@
}
private void handleDisplayRemovedLocked(int displayId) {
- final DisplayContent displayContent = mRoot.getDisplayContent(displayId);
+ final DisplayContent displayContent = mRoot.getDisplayContentOrCreate(displayId);
if (displayContent != null) {
displayContent.removeIfPossible();
}
@@ -9329,7 +9329,7 @@
}
private void handleDisplayChangedLocked(int displayId) {
- final DisplayContent displayContent = mRoot.getDisplayContent(displayId);
+ final DisplayContent displayContent = mRoot.getDisplayContentOrCreate(displayId);
if (displayContent != null) {
displayContent.updateDisplayInfo();
}