Loading services/core/java/com/android/server/wm/WindowLayersController.java +9 −6 Original line number Original line Diff line number Diff line Loading @@ -59,6 +59,7 @@ public class WindowLayersController { private int mHighestApplicationLayer = 0; private int mHighestApplicationLayer = 0; private ArrayDeque<WindowState> mPinnedWindows = new ArrayDeque<>(); private ArrayDeque<WindowState> mPinnedWindows = new ArrayDeque<>(); private ArrayDeque<WindowState> mDockedWindows = new ArrayDeque<>(); private ArrayDeque<WindowState> mDockedWindows = new ArrayDeque<>(); private ArrayDeque<WindowState> mInputMethodWindows = new ArrayDeque<>(); private WindowState mDockDivider = null; private WindowState mDockDivider = null; private ArrayDeque<WindowState> mReplacingWindows = new ArrayDeque<>(); private ArrayDeque<WindowState> mReplacingWindows = new ArrayDeque<>(); Loading Loading @@ -166,6 +167,7 @@ public class WindowLayersController { private void clear() { private void clear() { mHighestApplicationLayer = 0; mHighestApplicationLayer = 0; mPinnedWindows.clear(); mPinnedWindows.clear(); mInputMethodWindows.clear(); mDockedWindows.clear(); mDockedWindows.clear(); mReplacingWindows.clear(); mReplacingWindows.clear(); mDockDivider = null; mDockDivider = null; Loading @@ -179,6 +181,10 @@ public class WindowLayersController { if (w.mWillReplaceWindow) { if (w.mWillReplaceWindow) { mReplacingWindows.add(w); mReplacingWindows.add(w); } } if (w.mIsImWindow) { mInputMethodWindows.add(w); return; } final TaskStack stack = w.getStack(); final TaskStack stack = w.getStack(); if (stack == null) { if (stack == null) { return; return; Loading @@ -200,12 +206,9 @@ public class WindowLayersController { layer = assignAndIncreaseLayerIfNeeded(mDockDivider, layer); layer = assignAndIncreaseLayerIfNeeded(mDockDivider, layer); if (mDockDivider != null && mDockDivider.isVisibleLw() if (mDockDivider != null && mDockDivider.isVisibleLw()) { && mService.mInputMethodWindow != null) { while (!mInputMethodWindows.isEmpty()) { layer = assignAndIncreaseLayerIfNeeded(mService.mInputMethodWindow, layer); layer = assignAndIncreaseLayerIfNeeded(mInputMethodWindows.remove(), layer); for (int i = mService.mInputMethodDialogs.size() - 1; i >= 0; i--) { final WindowState dialog = mService.mInputMethodDialogs.get(i); layer = assignAndIncreaseLayerIfNeeded(dialog, layer); } } } } Loading Loading
services/core/java/com/android/server/wm/WindowLayersController.java +9 −6 Original line number Original line Diff line number Diff line Loading @@ -59,6 +59,7 @@ public class WindowLayersController { private int mHighestApplicationLayer = 0; private int mHighestApplicationLayer = 0; private ArrayDeque<WindowState> mPinnedWindows = new ArrayDeque<>(); private ArrayDeque<WindowState> mPinnedWindows = new ArrayDeque<>(); private ArrayDeque<WindowState> mDockedWindows = new ArrayDeque<>(); private ArrayDeque<WindowState> mDockedWindows = new ArrayDeque<>(); private ArrayDeque<WindowState> mInputMethodWindows = new ArrayDeque<>(); private WindowState mDockDivider = null; private WindowState mDockDivider = null; private ArrayDeque<WindowState> mReplacingWindows = new ArrayDeque<>(); private ArrayDeque<WindowState> mReplacingWindows = new ArrayDeque<>(); Loading Loading @@ -166,6 +167,7 @@ public class WindowLayersController { private void clear() { private void clear() { mHighestApplicationLayer = 0; mHighestApplicationLayer = 0; mPinnedWindows.clear(); mPinnedWindows.clear(); mInputMethodWindows.clear(); mDockedWindows.clear(); mDockedWindows.clear(); mReplacingWindows.clear(); mReplacingWindows.clear(); mDockDivider = null; mDockDivider = null; Loading @@ -179,6 +181,10 @@ public class WindowLayersController { if (w.mWillReplaceWindow) { if (w.mWillReplaceWindow) { mReplacingWindows.add(w); mReplacingWindows.add(w); } } if (w.mIsImWindow) { mInputMethodWindows.add(w); return; } final TaskStack stack = w.getStack(); final TaskStack stack = w.getStack(); if (stack == null) { if (stack == null) { return; return; Loading @@ -200,12 +206,9 @@ public class WindowLayersController { layer = assignAndIncreaseLayerIfNeeded(mDockDivider, layer); layer = assignAndIncreaseLayerIfNeeded(mDockDivider, layer); if (mDockDivider != null && mDockDivider.isVisibleLw() if (mDockDivider != null && mDockDivider.isVisibleLw()) { && mService.mInputMethodWindow != null) { while (!mInputMethodWindows.isEmpty()) { layer = assignAndIncreaseLayerIfNeeded(mService.mInputMethodWindow, layer); layer = assignAndIncreaseLayerIfNeeded(mInputMethodWindows.remove(), layer); for (int i = mService.mInputMethodDialogs.size() - 1; i >= 0; i--) { final WindowState dialog = mService.mInputMethodDialogs.get(i); layer = assignAndIncreaseLayerIfNeeded(dialog, layer); } } } } Loading