summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/AppWindowToken.java3
-rw-r--r--services/core/java/com/android/server/wm/DisplayContent.java41
-rw-r--r--services/core/java/com/android/server/wm/DockedStackDividerController.java22
-rw-r--r--services/core/java/com/android/server/wm/RootWindowContainer.java14
-rw-r--r--services/core/java/com/android/server/wm/WallpaperController.java7
-rw-r--r--services/core/java/com/android/server/wm/WindowLayersController.java59
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java42
-rw-r--r--services/core/java/com/android/server/wm/WindowState.java11
-rw-r--r--services/core/java/com/android/server/wm/WindowStateAnimator.java3
-rw-r--r--services/core/java/com/android/server/wm/WindowSurfacePlacer.java2
-rw-r--r--services/core/java/com/android/server/wm/WindowToken.java2
11 files changed, 108 insertions, 98 deletions
diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java
index ee7c6d2cfd1e..56eaa83383c5 100644
--- a/services/core/java/com/android/server/wm/AppWindowToken.java
+++ b/services/core/java/com/android/server/wm/AppWindowToken.java
@@ -425,8 +425,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
}
if (destroyedSomething) {
final DisplayContent dc = getDisplayContent();
- mService.mLayersController.assignLayersLocked(dc.getWindowList());
- dc.setLayoutNeeded();
+ dc.assignWindowLayers(true /*setLayoutNeeded*/);
}
}
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 3681123bb389..7299bdf29402 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -44,6 +44,7 @@ import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ADD_REMOVE;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_DISPLAY;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_FOCUS;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_FOCUS_LIGHT;
+import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYERS;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYOUT;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_WINDOW_MOVEMENT;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_VISIBILITY;
@@ -171,13 +172,20 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
// the display's direct children should be allowed.
private boolean mRemovingDisplay = false;
+ private final WindowLayersController mLayersController;
+ int mInputMethodAnimLayerAdjustment;
+
/**
* @param display May not be null.
* @param service You know.
+ * @param layersController window layer controller used to assign layer to the windows on this
+ * display.
*/
- DisplayContent(Display display, WindowManagerService service) {
+ DisplayContent(Display display, WindowManagerService service,
+ WindowLayersController layersController) {
mDisplay = display;
mDisplayId = display.getDisplayId();
+ mLayersController = layersController;
display.getDisplayInfo(mDisplayInfo);
display.getMetrics(mDisplayMetrics);
isDefaultDisplay = mDisplayId == DEFAULT_DISPLAY;
@@ -691,6 +699,24 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
}
}
+ void setInputMethodAnimLayerAdjustment(int adj) {
+ if (DEBUG_LAYERS) Slog.v(TAG_WM, "Setting im layer adj to " + adj);
+ mInputMethodAnimLayerAdjustment = adj;
+ final WindowState imw = mService.mInputMethodWindow;
+ if (imw != null) {
+ imw.adjustAnimLayer(adj);
+ }
+ for (int i = mService.mInputMethodDialogs.size() - 1; i >= 0; i--) {
+ final WindowState dialog = mService.mInputMethodDialogs.get(i);
+ // TODO: This and other places setting mAnimLayer can probably use WS.adjustAnimLayer,
+ // but need to make sure we are not setting things twice for child windows that are
+ // already in the list.
+ dialog.mWinAnimator.mAnimLayer = dialog.mLayer + adj;
+ if (DEBUG_LAYERS) Slog.v(TAG_WM, "IM win " + imw
+ + " anim layer: " + dialog.mWinAnimator.mAnimLayer);
+ }
+ }
+
void prepareFreezingTaskBounds() {
for (int stackNdx = mTaskStackContainers.size() - 1; stackNdx >= 0; --stackNdx) {
final TaskStack stack = mTaskStackContainers.get(stackNdx);
@@ -798,6 +824,11 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
mDimLayerController.dump(prefix + " ", pw);
pw.println();
mDividerControllerLocked.dump(prefix + " ", pw);
+
+ if (mInputMethodAnimLayerAdjustment != 0) {
+ pw.println(subPrefix
+ + "mInputMethodAnimLayerAdjustment=" + mInputMethodAnimLayerAdjustment);
+ }
}
@Override
@@ -1113,6 +1144,14 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
}
}
+ /** Updates the layer assignment of windows on this display. */
+ void assignWindowLayers(boolean setLayoutNeeded) {
+ mLayersController.assignWindowLayers(mWindows);
+ if (setLayoutNeeded) {
+ setLayoutNeeded();
+ }
+ }
+
/**
* Z-orders the display window list so that:
* <ul>
diff --git a/services/core/java/com/android/server/wm/DockedStackDividerController.java b/services/core/java/com/android/server/wm/DockedStackDividerController.java
index 58541973a650..8b5f62e51d21 100644
--- a/services/core/java/com/android/server/wm/DockedStackDividerController.java
+++ b/services/core/java/com/android/server/wm/DockedStackDividerController.java
@@ -33,6 +33,7 @@ import static com.android.server.wm.AppTransition.TRANSIT_NONE;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
import static com.android.server.wm.WindowManagerService.H.NOTIFY_DOCKED_STACK_MINIMIZED_CHANGED;
+import static com.android.server.wm.WindowManagerService.LAYER_OFFSET_DIM;
import android.content.Context;
import android.content.res.Configuration;
@@ -296,7 +297,7 @@ public class DockedStackDividerController implements DimLayerUser {
}
}
- boolean wasVisible() {
+ private boolean wasVisible() {
return mLastVisibility;
}
@@ -356,7 +357,7 @@ public class DockedStackDividerController implements DimLayerUser {
mLastRect.set(frame);
}
- void notifyDockedDividerVisibilityChanged(boolean visible) {
+ private void notifyDockedDividerVisibilityChanged(boolean visible) {
final int size = mDockedStackListeners.beginBroadcast();
for (int i = 0; i < size; ++i) {
final IDockedStackListener listener = mDockedStackListeners.getBroadcastItem(i);
@@ -413,7 +414,7 @@ public class DockedStackDividerController implements DimLayerUser {
return mImeHideRequested;
}
- void notifyDockedStackMinimizedChanged(boolean minimizedDock, long animDuration) {
+ private void notifyDockedStackMinimizedChanged(boolean minimizedDock, long animDuration) {
mService.mH.removeMessages(NOTIFY_DOCKED_STACK_MINIMIZED_CHANGED);
mService.mH.obtainMessage(NOTIFY_DOCKED_STACK_MINIMIZED_CHANGED,
minimizedDock ? 1 : 0, 0).sendToTarget();
@@ -442,7 +443,7 @@ public class DockedStackDividerController implements DimLayerUser {
mDockedStackListeners.finishBroadcast();
}
- void notifyAdjustedForImeChanged(boolean adjustedForIme, long animDuration) {
+ private void notifyAdjustedForImeChanged(boolean adjustedForIme, long animDuration) {
final int size = mDockedStackListeners.beginBroadcast();
for (int i = 0; i < size; ++i) {
final IDockedStackListener listener = mDockedStackListeners.getBroadcastItem(i);
@@ -474,8 +475,7 @@ public class DockedStackDividerController implements DimLayerUser {
stack.getDimBounds(mTmpRect);
if (mTmpRect.height() > 0 && mTmpRect.width() > 0) {
mDimLayer.setBounds(mTmpRect);
- mDimLayer.show(mService.mLayersController.getResizeDimLayer(),
- alpha, 0 /* duration */);
+ mDimLayer.show(getResizeDimLayer(), alpha, 0 /* duration */);
} else {
visibleAndValid = false;
}
@@ -487,6 +487,14 @@ public class DockedStackDividerController implements DimLayerUser {
}
/**
+ * @return The layer used for dimming the apps when dismissing docked/fullscreen stack. Just
+ * above all application surfaces.
+ */
+ private int getResizeDimLayer() {
+ return (mWindow != null) ? mWindow.mLayer - 1 : LAYER_OFFSET_DIM;
+ }
+
+ /**
* Notifies the docked stack divider controller of a visibility change that happens without
* an animation.
*/
@@ -693,7 +701,7 @@ public class DockedStackDividerController implements DimLayerUser {
return animateForIme(now);
} else {
if (mDimLayer != null && mDimLayer.isDimming()) {
- mDimLayer.setLayer(mService.mLayersController.getResizeDimLayer());
+ mDimLayer.setLayer(getResizeDimLayer());
}
return false;
}
diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java
index 05ffe2d14167..bddf6e2e915e 100644
--- a/services/core/java/com/android/server/wm/RootWindowContainer.java
+++ b/services/core/java/com/android/server/wm/RootWindowContainer.java
@@ -165,8 +165,11 @@ class RootWindowContainer extends WindowContainer<DisplayContent> {
ParcelFileDescriptor mSurfaceTraceFd;
RemoteEventTrace mRemoteEventTrace;
+ private final WindowLayersController mLayersController;
+
RootWindowContainer(WindowManagerService service) {
mService = service;
+ mLayersController = new WindowLayersController(mService);
}
WindowState computeFocusedWindow() {
@@ -211,7 +214,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> {
}
private DisplayContent createDisplayContent(final Display display) {
- final DisplayContent dc = new DisplayContent(display, mService);
+ final DisplayContent dc = new DisplayContent(display, mService, mLayersController);
final int displayId = display.getDisplayId();
if (DEBUG_DISPLAY) Slog.v(TAG_WM, "Adding display=" + display);
@@ -1171,9 +1174,9 @@ class RootWindowContainer extends WindowContainer<DisplayContent> {
}
}
- for (DisplayContent displayContent : displayList) {
- mService.mLayersController.assignLayersLocked(displayContent.getWindowList());
- displayContent.setLayoutNeeded();
+ for (int j = displayList.size() - 1; j >= 0; --j) {
+ final DisplayContent dc = displayList.get(j);
+ dc.assignWindowLayers(true /*setLayoutNeeded*/);
}
}
@@ -1250,8 +1253,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> {
if ((dc.pendingLayoutChanges & FINISH_LAYOUT_REDO_WALLPAPER) != 0
&& mService.mWallpaperControllerLocked.adjustWallpaperWindows()) {
- mService.mLayersController.assignLayersLocked(windows);
- dc.setLayoutNeeded();
+ dc.assignWindowLayers(true /*setLayoutNeeded*/);
}
if (isDefaultDisplay
diff --git a/services/core/java/com/android/server/wm/WallpaperController.java b/services/core/java/com/android/server/wm/WallpaperController.java
index 0841231ae328..972a0cb05a38 100644
--- a/services/core/java/com/android/server/wm/WallpaperController.java
+++ b/services/core/java/com/android/server/wm/WallpaperController.java
@@ -742,8 +742,7 @@ class WallpaperController {
}
if (adjust && adjustWallpaperWindows()) {
- mService.mLayersController.assignLayersLocked(windows);
- dc.setLayoutNeeded();
+ dc.assignWindowLayers(true /*setLayoutNeeded*/);
}
}
@@ -769,6 +768,10 @@ class WallpaperController {
pw.print("mLastWallpaperDisplayOffsetX="); pw.print(mLastWallpaperDisplayOffsetX);
pw.print(" mLastWallpaperDisplayOffsetY="); pw.println(mLastWallpaperDisplayOffsetY);
}
+
+ if (mWallpaperAnimLayerAdjustment != 0) {
+ pw.println(prefix + "mWallpaperAnimLayerAdjustment=" + mWallpaperAnimLayerAdjustment);
+ }
}
void dumpTokens(PrintWriter pw, String prefix, boolean dumpAll) {
diff --git a/services/core/java/com/android/server/wm/WindowLayersController.java b/services/core/java/com/android/server/wm/WindowLayersController.java
index 68c2be93d69e..e184e39eefcc 100644
--- a/services/core/java/com/android/server/wm/WindowLayersController.java
+++ b/services/core/java/com/android/server/wm/WindowLayersController.java
@@ -48,12 +48,10 @@ import static com.android.server.wm.WindowManagerService.WINDOW_LAYER_MULTIPLIER
* <li>replaced windows, which need to live above their normal level, because they anticipate
* an animation</li>.
*/
-public class WindowLayersController {
+class WindowLayersController {
private final WindowManagerService mService;
- private int mInputMethodAnimLayerAdjustment;
-
- public WindowLayersController(WindowManagerService service) {
+ WindowLayersController(WindowManagerService service) {
mService = service;
}
@@ -65,7 +63,7 @@ public class WindowLayersController {
private WindowState mDockDivider = null;
private ArrayDeque<WindowState> mReplacingWindows = new ArrayDeque<>();
- final void assignLayersLocked(WindowList windows) {
+ final void assignWindowLayers(WindowList windows) {
if (DEBUG_LAYERS) Slog.v(TAG_WM, "Assigning layers based on windows=" + windows,
new RuntimeException("here").fillInStackTrace());
@@ -87,7 +85,7 @@ public class WindowLayersController {
// TODO: Preserved old behavior of code here but not sure comparing
// oldLayer to mAnimLayer and mLayer makes sense...though the
- // worst case would be unintentionalp layer reassignment.
+ // worst case would be unintentional layer reassignment.
if (w.mLayer != oldLayer || w.mWinAnimator.mAnimLayer != oldLayer) {
layerChanged = true;
anyLayerChanged = true;
@@ -115,41 +113,6 @@ public class WindowLayersController {
if (DEBUG_LAYERS) logDebugLayers(windows);
}
- void setInputMethodAnimLayerAdjustment(int adj) {
- if (DEBUG_LAYERS) Slog.v(TAG_WM, "Setting im layer adj to " + adj);
- mInputMethodAnimLayerAdjustment = adj;
- final WindowState imw = mService.mInputMethodWindow;
- if (imw != null) {
- imw.adjustAnimLayer(adj);
- }
- for (int i = mService.mInputMethodDialogs.size() - 1; i >= 0; i--) {
- final WindowState dialog = mService.mInputMethodDialogs.get(i);
- // TODO: This and other places setting mAnimLayer can probably use WS.adjustAnimLayer,
- // but need to make sure we are not setting things twice for child windows that are
- // already in the list.
- dialog.mWinAnimator.mAnimLayer = dialog.mLayer + adj;
- if (DEBUG_LAYERS) Slog.v(TAG_WM, "IM win " + imw
- + " anim layer: " + dialog.mWinAnimator.mAnimLayer);
- }
- }
-
- int getSpecialWindowAnimLayerAdjustment(WindowState win) {
- if (win.mIsImWindow) {
- return mInputMethodAnimLayerAdjustment;
- } else if (win.mIsWallpaper) {
- return mService.mWallpaperControllerLocked.getAnimLayerAdjustment();
- }
- return 0;
- }
-
- /**
- * @return The layer used for dimming the apps when dismissing docked/fullscreen stack. Just
- * above all application surfaces.
- */
- int getResizeDimLayer() {
- return (mDockDivider != null) ? mDockDivider.mLayer - 1 : LAYER_OFFSET_DIM;
- }
-
private void logDebugLayers(WindowList windows) {
for (int i = 0, n = windows.size(); i < n; i++) {
final WindowState w = windows.get(i);
@@ -250,21 +213,11 @@ public class WindowLayersController {
private void assignAnimLayer(WindowState w, int layer) {
w.mLayer = layer;
- w.mWinAnimator.mAnimLayer = w.mLayer + w.getAnimLayerAdjustment() +
- getSpecialWindowAnimLayerAdjustment(w);
+ w.mWinAnimator.mAnimLayer = w.getAnimLayerAdjustment()
+ + w.getSpecialWindowAnimLayerAdjustment();
if (w.mAppToken != null && w.mAppToken.mAppAnimator.thumbnailForceAboveLayer > 0
&& w.mWinAnimator.mAnimLayer > w.mAppToken.mAppAnimator.thumbnailForceAboveLayer) {
w.mAppToken.mAppAnimator.thumbnailForceAboveLayer = w.mWinAnimator.mAnimLayer;
}
}
-
- void dump(PrintWriter pw, String s) {
- if (mInputMethodAnimLayerAdjustment != 0 ||
- mService.mWallpaperControllerLocked.getAnimLayerAdjustment() != 0) {
- pw.print(" mInputMethodAnimLayerAdjustment=");
- pw.print(mInputMethodAnimLayerAdjustment);
- pw.print(" mWallpaperAnimLayerAdjustment=");
- pw.println(mService.mWallpaperControllerLocked.getAnimLayerAdjustment());
- }
- }
}
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 02d04cc2438e..b90dc93c41bd 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -675,8 +675,6 @@ public class WindowManagerService extends IWindowManager.Stub
WallpaperController mWallpaperControllerLocked;
- final WindowLayersController mLayersController;
-
boolean mAnimateWallpaperWithTarget;
// TODO: Move to RootWindowContainer
@@ -685,19 +683,19 @@ public class WindowManagerService extends IWindowManager.Stub
PowerManager mPowerManager;
PowerManagerInternal mPowerManagerInternal;
- float mWindowAnimationScaleSetting = 1.0f;
- float mTransitionAnimationScaleSetting = 1.0f;
- float mAnimatorDurationScaleSetting = 1.0f;
- boolean mAnimationsDisabled = false;
+ private float mWindowAnimationScaleSetting = 1.0f;
+ private float mTransitionAnimationScaleSetting = 1.0f;
+ private float mAnimatorDurationScaleSetting = 1.0f;
+ private boolean mAnimationsDisabled = false;
final InputManagerService mInputManager;
final DisplayManagerInternal mDisplayManagerInternal;
final DisplayManager mDisplayManager;
- final Display[] mDisplays;
+ private final Display[] mDisplays;
// Who is holding the screen on.
- Session mHoldingScreenOn;
- PowerManager.WakeLock mHoldingScreenWakeLock;
+ private Session mHoldingScreenOn;
+ private PowerManager.WakeLock mHoldingScreenWakeLock;
boolean mTurnOnScreen;
@@ -708,7 +706,7 @@ public class WindowManagerService extends IWindowManager.Stub
DragState mDragState = null;
// For frozen screen animations.
- int mExitAnimId, mEnterAnimId;
+ private int mExitAnimId, mEnterAnimId;
boolean mAnimationScheduled;
@@ -972,7 +970,6 @@ public class WindowManagerService extends IWindowManager.Stub
mWallpaperControllerLocked = new WallpaperController(this);
mWindowPlacerLocked = new WindowSurfacePlacer(this);
- mLayersController = new WindowLayersController(this);
mPolicy = policy;
LocalServices.addService(WindowManagerPolicy.class, mPolicy);
@@ -1120,7 +1117,8 @@ public class WindowManagerService extends IWindowManager.Stub
// TODO(multidisplay): Needs some serious rethought when the target and IME are not on the
// same display. Or even when the current IME/target are not on the same screen as the next
// IME/target. For now only look for input windows on the main screen.
- WindowList windows = getDefaultWindowListLocked();
+ final DisplayContent dc = getDefaultDisplayContentLocked();
+ final WindowList windows = dc.getWindowList();
WindowState w = null;
int i;
for (i = windows.size() - 1; i >= 0; --i) {
@@ -1235,10 +1233,10 @@ public class WindowManagerService extends IWindowManager.Stub
mInputMethodTarget = w;
mInputMethodTargetWaitingAnim = false;
if (w.mAppToken != null) {
- mLayersController.setInputMethodAnimLayerAdjustment(
+ dc.setInputMethodAnimLayerAdjustment(
w.mAppToken.mAppAnimator.animLayerAdjustment);
} else {
- mLayersController.setInputMethodAnimLayerAdjustment(0);
+ dc.setInputMethodAnimLayerAdjustment(0);
}
}
@@ -1260,7 +1258,7 @@ public class WindowManagerService extends IWindowManager.Stub
if (DEBUG_INPUT_METHOD) Slog.w(TAG_WM, "Moving IM target from " + curTarget + " to null."
+ (SHOW_STACK_CRAWLS ? " Callers=" + Debug.getCallers(4) : ""));
mInputMethodTarget = null;
- mLayersController.setInputMethodAnimLayerAdjustment(0);
+ dc.setInputMethodAnimLayerAdjustment(0);
}
return -1;
}
@@ -1426,7 +1424,7 @@ public class WindowManagerService extends IWindowManager.Stub
}
if (needAssignLayers) {
- mLayersController.assignLayersLocked(windows);
+ getDefaultDisplayContentLocked().assignWindowLayers(false /* setLayoutNeeded */);
}
return true;
@@ -1804,9 +1802,9 @@ public class WindowManagerService extends IWindowManager.Stub
moveInputMethodWindowsIfNeededLocked(false);
}
- mLayersController.assignLayersLocked(displayContent.getWindowList());
// Don't do layout here, the window must call
// relayout to be displayed, so we'll do it there.
+ displayContent.assignWindowLayers(false /* setLayoutNeeded */);
if (focusChanged) {
mInputMonitor.setInputFocusLw(mCurrentFocus, false /*updateInputWindows*/);
@@ -2019,8 +2017,7 @@ public class WindowManagerService extends IWindowManager.Stub
if (windows != null) {
windows.remove(win);
if (!mWindowPlacerLocked.isInLayout()) {
- mLayersController.assignLayersLocked(windows);
- win.setDisplayLayoutNeeded();
+ win.getDisplayContent().assignWindowLayers(true /* setLayoutNeeded */);
mWindowPlacerLocked.performSurfacePlacement();
if (win.mAppToken != null) {
win.mAppToken.updateReportedVisibilityLocked();
@@ -2398,7 +2395,7 @@ public class WindowManagerService extends IWindowManager.Stub
// its layer recomputed. However, if the IME was hidden
// and isn't actually moved in the list, its layer may be
// out of data so we make sure to recompute it.
- mLayersController.assignLayersLocked(win.getWindowList());
+ win.getDisplayContent().assignWindowLayers(false /* setLayoutNeeded */);
}
if (wallpaperMayMove) {
@@ -3719,7 +3716,7 @@ public class WindowManagerService extends IWindowManager.Stub
if (!updateFocusedWindowLocked(UPDATE_FOCUS_WILL_PLACE_SURFACES,
false /*updateInputWindows*/)) {
- mLayersController.assignLayersLocked(displayContent.getWindowList());
+ displayContent.assignWindowLayers(false /* setLayoutNeeded */);
}
mInputMonitor.setUpdateInputWindowsNeededLw();
@@ -8098,7 +8095,7 @@ public class WindowManagerService extends IWindowManager.Stub
} else if (mode == UPDATE_FOCUS_WILL_PLACE_SURFACES) {
// Client will do the layout, but we need to assign layers
// for handleNewWindowLocked() below.
- mLayersController.assignLayersLocked(displayContent.getWindowList());
+ displayContent.assignWindowLayers(false /* setLayoutNeeded */);
}
}
@@ -8758,7 +8755,6 @@ public class WindowManagerService extends IWindowManager.Stub
}
mWindowPlacerLocked.dump(pw, " ");
mWallpaperControllerLocked.dump(pw, " ");
- mLayersController.dump(pw, " ");
pw.print(" mSystemBooted="); pw.print(mSystemBooted);
pw.print(" mDisplayEnabled="); pw.println(mDisplayEnabled);
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index fa4dbc4f4f10..617c1450e8df 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -1986,6 +1986,17 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
return 0;
}
+ int getSpecialWindowAnimLayerAdjustment() {
+ int specialAdjustment = 0;
+ if (mIsImWindow) {
+ specialAdjustment = getDisplayContent().mInputMethodAnimLayerAdjustment;
+ } else if (mIsWallpaper) {
+ specialAdjustment = mService.mWallpaperControllerLocked.getAnimLayerAdjustment();
+ }
+
+ return mLayer + specialAdjustment;
+ }
+
void scheduleAnimationIfDimming() {
final DisplayContent dc = getDisplayContent();
if (dc == null) {
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java
index 53fb99b4effd..12e5bce0e9fb 100644
--- a/services/core/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java
@@ -461,8 +461,7 @@ class WindowStateAnimator {
if (mAnimator.mWindowDetachedWallpaper == mWin) {
mAnimator.mWindowDetachedWallpaper = null;
}
- mAnimLayer = mWin.mLayer
- + mService.mLayersController.getSpecialWindowAnimLayerAdjustment(mWin);
+ mAnimLayer = mWin.getSpecialWindowAnimLayerAdjustment();
if (DEBUG_LAYERS) Slog.v(TAG, "Stepping win " + this + " anim layer: " + mAnimLayer);
mHasTransformation = false;
mHasLocalTransformation = false;
diff --git a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
index 285a75c7d445..336bc68932ae 100644
--- a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
+++ b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
@@ -532,7 +532,7 @@ class WindowSurfacePlacer {
// TODO(multidisplay): IMEs are only supported on the default display.
if (windows == mService.getDefaultWindowListLocked()
&& !mService.moveInputMethodWindowsIfNeededLocked(true)) {
- mService.mLayersController.assignLayersLocked(windows);
+ mService.getDefaultDisplayContentLocked().assignWindowLayers(false /*setLayoutNeeded*/);
}
mService.updateFocusedWindowLocked(UPDATE_FOCUS_PLACING_SURFACES,
true /*updateInputWindows*/);
diff --git a/services/core/java/com/android/server/wm/WindowToken.java b/services/core/java/com/android/server/wm/WindowToken.java
index 218972ac08b8..afaaeb9adef7 100644
--- a/services/core/java/com/android/server/wm/WindowToken.java
+++ b/services/core/java/com/android/server/wm/WindowToken.java
@@ -140,7 +140,7 @@ class WindowToken extends WindowContainer<WindowState> {
highestAnimLayer = winHighestAnimLayer;
}
if (w == mService.mInputMethodTarget && !mService.mInputMethodTargetWaitingAnim) {
- mService.mLayersController.setInputMethodAnimLayerAdjustment(adj);
+ mDisplayContent.setInputMethodAnimLayerAdjustment(adj);
}
}
return highestAnimLayer;