Loading services/core/java/com/android/server/wm/AppWindowToken.java +4 −4 Original line number Diff line number Diff line Loading @@ -429,7 +429,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree for (int i = 0; i < displayList.size(); i++) { final DisplayContent displayContent = displayList.get(i); mService.mLayersController.assignLayersLocked(displayContent.getWindowList()); displayContent.layoutNeeded = true; displayContent.setLayoutNeeded(); } } Loading Loading @@ -957,7 +957,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree mService.updateFocusedWindowLocked( UPDATE_FOCUS_WILL_PLACE_SURFACES, true /*updateInputWindows*/); mService.getDefaultDisplayContentLocked().layoutNeeded = true; mService.getDefaultDisplayContentLocked().setLayoutNeeded(); mService.mWindowPlacerLocked.performSurfacePlacement(); Binder.restoreCallingIdentity(origId); return true; Loading Loading @@ -1065,7 +1065,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree allDrawn = true; // Force an additional layout pass where // WindowStateAnimator#commitFinishDrawingLocked() will call performShowLocked(). displayContent.layoutNeeded = true; displayContent.setLayoutNeeded(); mService.mH.obtainMessage(NOTIFY_ACTIVITY_DRAWN, token).sendToTarget(); } } Loading @@ -1076,7 +1076,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree + " interesting=" + numInteresting + " drawn=" + numDrawnWindowsExcludingSaved); allDrawnExcludingSaved = true; displayContent.layoutNeeded = true; displayContent.setLayoutNeeded(); if (isAnimatingInvisibleWithSavedSurface() && !mService.mFinishedEarlyAnim.contains(this)) { mService.mFinishedEarlyAnim.add(this); Loading services/core/java/com/android/server/wm/DimLayerController.java +1 −1 Original line number Diff line number Diff line Loading @@ -256,7 +256,7 @@ class DimLayerController { // on whether a dim layer is showing or not. if (targetAlpha == 0) { mDisplayContent.pendingLayoutChanges |= FINISH_LAYOUT_REDO_LAYOUT; mDisplayContent.layoutNeeded = true; mDisplayContent.setLayoutNeeded(); } } } else if (state.dimLayer.getLayer() != dimLayer) { Loading services/core/java/com/android/server/wm/DisplayContent.java +20 −5 Original line number Diff line number Diff line Loading @@ -38,6 +38,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_LAYOUT; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_WINDOW_MOVEMENT; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_VISIBILITY; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ORIENTATION; Loading Loading @@ -100,7 +101,7 @@ class DisplayContent extends WindowContainer<TaskStack> { private Rect mContentRect = new Rect(); // Accessed directly by all users. boolean layoutNeeded; private boolean mLayoutNeeded; int pendingLayoutChanges; final boolean isDefaultDisplay; Loading Loading @@ -367,7 +368,7 @@ class DisplayContent extends WindowContainer<TaskStack> { } } addChild(stack, addIndex); layoutNeeded = true; setLayoutNeeded(); } /** Loading Loading @@ -684,8 +685,8 @@ class DisplayContent extends WindowContainer<TaskStack> { pw.print("x"); pw.print(mDisplayInfo.smallestNominalAppHeight); pw.print("-"); pw.print(mDisplayInfo.largestNominalAppWidth); pw.print("x"); pw.println(mDisplayInfo.largestNominalAppHeight); pw.print(subPrefix); pw.print("deferred="); pw.print(mDeferredRemoval); pw.print(" layoutNeeded="); pw.println(layoutNeeded); pw.println(subPrefix + "deferred=" + mDeferredRemoval + " mLayoutNeeded=" + mLayoutNeeded); pw.println(); pw.println(" Application tokens in top down Z order:"); Loading Loading @@ -1090,7 +1091,7 @@ class DisplayContent extends WindowContainer<TaskStack> { i -= lastBelow; if (i != numRemoved) { layoutNeeded = true; setLayoutNeeded(); Slog.w(TAG_WM, "On display=" + mDisplayId + " Rebuild removed " + numRemoved + " windows but added " + i + " rebuildAppWindowListLocked() " + " callers=" + Debug.getCallers(10)); Loading Loading @@ -1127,6 +1128,20 @@ class DisplayContent extends WindowContainer<TaskStack> { return windowList; } void setLayoutNeeded() { if (DEBUG_LAYOUT) Slog.w(TAG_WM, "setLayoutNeeded: callers=" + Debug.getCallers(3)); mLayoutNeeded = true; } void clearLayoutNeeded() { if (DEBUG_LAYOUT) Slog.w(TAG_WM, "clearLayoutNeeded: callers=" + Debug.getCallers(3)); mLayoutNeeded = false; } boolean isLayoutNeeded() { return mLayoutNeeded; } private int addAppWindowExisting(WindowState win, WindowList tokenWindowList) { int tokenWindowsPos; Loading services/core/java/com/android/server/wm/RootWindowContainer.java +16 −17 Original line number Diff line number Diff line Loading @@ -29,7 +29,6 @@ import android.os.UserHandle; import android.provider.Settings; import android.util.EventLog; import android.util.Slog; import android.util.SparseArray; import android.util.SparseIntArray; import android.view.Display; import android.view.DisplayInfo; Loading Loading @@ -265,11 +264,11 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { return bounds; } boolean layoutNeeded() { boolean isLayoutNeeded() { final int numDisplays = mChildren.size(); for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) { final DisplayContent displayContent = mChildren.get(displayNdx); if (displayContent.layoutNeeded) { if (displayContent.isLayoutNeeded()) { return true; } } Loading Loading @@ -753,7 +752,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { } } if (layoutNeeded()) { if (isLayoutNeeded()) { defaultDisplay.pendingLayoutChanges |= FINISH_LAYOUT_REDO_LAYOUT; if (DEBUG_LAYOUT_REPEATS) surfacePlacer.debugLayoutRepeats("mLayoutNeeded", defaultDisplay.pendingLayoutChanges); Loading Loading @@ -840,13 +839,13 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { if (wallpaperDestroyed) { defaultDisplay.pendingLayoutChanges |= FINISH_LAYOUT_REDO_WALLPAPER; defaultDisplay.layoutNeeded = true; defaultDisplay.setLayoutNeeded(); } for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) { final DisplayContent displayContent = mChildren.get(displayNdx); if (displayContent.pendingLayoutChanges != 0) { displayContent.layoutNeeded = true; displayContent.setLayoutNeeded(); } } Loading Loading @@ -901,8 +900,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { } if (mService.mWaitingForDrawnCallback != null || (mOrientationChangeComplete && !defaultDisplay.layoutNeeded && !mUpdateRotation)) { (mOrientationChangeComplete && !defaultDisplay.isLayoutNeeded() && !mUpdateRotation)) { mService.checkDrawnWindowsLocked(); } Loading @@ -925,7 +924,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { for (DisplayContent displayContent : displayList) { mService.mLayersController.assignLayersLocked(displayContent.getWindowList()); displayContent.layoutNeeded = true; displayContent.setLayoutNeeded(); } } Loading @@ -951,7 +950,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { } // TODO: Super crazy long method that should be broken down... void applySurfaceChangesTransaction(boolean recoveringMemory, int defaultDw, int defaultDh) { private void applySurfaceChangesTransaction(boolean recoveringMemory, int defaultDw, int defaultDh) { mHoldScreenWindow = null; mObsuringWindow = null; Loading Loading @@ -993,7 +992,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { repeats++; if (repeats > 6) { Slog.w(TAG, "Animation repeat aborted after too many iterations"); dc.layoutNeeded = false; dc.clearLayoutNeeded(); break; } Loading @@ -1003,20 +1002,20 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { if ((dc.pendingLayoutChanges & FINISH_LAYOUT_REDO_WALLPAPER) != 0 && mService.mWallpaperControllerLocked.adjustWallpaperWindows()) { mService.mLayersController.assignLayersLocked(windows); dc.layoutNeeded = true; dc.setLayoutNeeded(); } if (isDefaultDisplay && (dc.pendingLayoutChanges & FINISH_LAYOUT_REDO_CONFIG) != 0) { if (DEBUG_LAYOUT) Slog.v(TAG, "Computing new config from layout"); if (mService.updateOrientationFromAppTokensLocked(true)) { dc.layoutNeeded = true; dc.setLayoutNeeded(); mService.mH.sendEmptyMessage(SEND_NEW_CONFIGURATION); } } if ((dc.pendingLayoutChanges & FINISH_LAYOUT_REDO_LAYOUT) != 0) { dc.layoutNeeded = true; dc.setLayoutNeeded(); } // FIRST LOOP: Perform a layout, if needed. Loading Loading @@ -1407,14 +1406,14 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { } void dumpLayoutNeededDisplayIds(PrintWriter pw) { if (!layoutNeeded()) { if (!isLayoutNeeded()) { return; } pw.print(" layoutNeeded on displays="); pw.print(" mLayoutNeeded on displays="); final int count = mChildren.size(); for (int displayNdx = 0; displayNdx < count; ++displayNdx) { final DisplayContent displayContent = mChildren.get(displayNdx); if (displayContent.layoutNeeded) { if (displayContent.isLayoutNeeded()) { pw.print(displayContent.getDisplayId()); } } Loading services/core/java/com/android/server/wm/TaskStack.java +3 −3 Original line number Diff line number Diff line Loading @@ -230,7 +230,7 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye } } alignTasksToAdjustedBounds(adjusted ? mAdjustedBounds : mBounds, insetBounds); mDisplayContent.layoutNeeded = true; mDisplayContent.setLayoutNeeded(); } private void alignTasksToAdjustedBounds(Rect adjustedBounds, Rect tempInsetBounds) { Loading Loading @@ -598,7 +598,7 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye if (mChildren.isEmpty()) { mDisplayContent.moveStack(this, false); } mDisplayContent.layoutNeeded = true; mDisplayContent.setLayoutNeeded(); } for (int appNdx = mExitingAppTokens.size() - 1; appNdx >= 0; --appNdx) { final AppWindowToken wtoken = mExitingAppTokens.get(appNdx); Loading Loading @@ -1080,7 +1080,7 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye final Rect insetBounds = mImeGoingAway ? mBounds : mFullyAdjustedImeBounds; task.alignToAdjustedBounds(mAdjustedBounds, insetBounds, getDockSide() == DOCKED_TOP); mDisplayContent.layoutNeeded = true; mDisplayContent.setLayoutNeeded(); } boolean isAdjustedForMinimizedDockedStack() { Loading Loading
services/core/java/com/android/server/wm/AppWindowToken.java +4 −4 Original line number Diff line number Diff line Loading @@ -429,7 +429,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree for (int i = 0; i < displayList.size(); i++) { final DisplayContent displayContent = displayList.get(i); mService.mLayersController.assignLayersLocked(displayContent.getWindowList()); displayContent.layoutNeeded = true; displayContent.setLayoutNeeded(); } } Loading Loading @@ -957,7 +957,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree mService.updateFocusedWindowLocked( UPDATE_FOCUS_WILL_PLACE_SURFACES, true /*updateInputWindows*/); mService.getDefaultDisplayContentLocked().layoutNeeded = true; mService.getDefaultDisplayContentLocked().setLayoutNeeded(); mService.mWindowPlacerLocked.performSurfacePlacement(); Binder.restoreCallingIdentity(origId); return true; Loading Loading @@ -1065,7 +1065,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree allDrawn = true; // Force an additional layout pass where // WindowStateAnimator#commitFinishDrawingLocked() will call performShowLocked(). displayContent.layoutNeeded = true; displayContent.setLayoutNeeded(); mService.mH.obtainMessage(NOTIFY_ACTIVITY_DRAWN, token).sendToTarget(); } } Loading @@ -1076,7 +1076,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree + " interesting=" + numInteresting + " drawn=" + numDrawnWindowsExcludingSaved); allDrawnExcludingSaved = true; displayContent.layoutNeeded = true; displayContent.setLayoutNeeded(); if (isAnimatingInvisibleWithSavedSurface() && !mService.mFinishedEarlyAnim.contains(this)) { mService.mFinishedEarlyAnim.add(this); Loading
services/core/java/com/android/server/wm/DimLayerController.java +1 −1 Original line number Diff line number Diff line Loading @@ -256,7 +256,7 @@ class DimLayerController { // on whether a dim layer is showing or not. if (targetAlpha == 0) { mDisplayContent.pendingLayoutChanges |= FINISH_LAYOUT_REDO_LAYOUT; mDisplayContent.layoutNeeded = true; mDisplayContent.setLayoutNeeded(); } } } else if (state.dimLayer.getLayer() != dimLayer) { Loading
services/core/java/com/android/server/wm/DisplayContent.java +20 −5 Original line number Diff line number Diff line Loading @@ -38,6 +38,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_LAYOUT; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_WINDOW_MOVEMENT; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_VISIBILITY; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ORIENTATION; Loading Loading @@ -100,7 +101,7 @@ class DisplayContent extends WindowContainer<TaskStack> { private Rect mContentRect = new Rect(); // Accessed directly by all users. boolean layoutNeeded; private boolean mLayoutNeeded; int pendingLayoutChanges; final boolean isDefaultDisplay; Loading Loading @@ -367,7 +368,7 @@ class DisplayContent extends WindowContainer<TaskStack> { } } addChild(stack, addIndex); layoutNeeded = true; setLayoutNeeded(); } /** Loading Loading @@ -684,8 +685,8 @@ class DisplayContent extends WindowContainer<TaskStack> { pw.print("x"); pw.print(mDisplayInfo.smallestNominalAppHeight); pw.print("-"); pw.print(mDisplayInfo.largestNominalAppWidth); pw.print("x"); pw.println(mDisplayInfo.largestNominalAppHeight); pw.print(subPrefix); pw.print("deferred="); pw.print(mDeferredRemoval); pw.print(" layoutNeeded="); pw.println(layoutNeeded); pw.println(subPrefix + "deferred=" + mDeferredRemoval + " mLayoutNeeded=" + mLayoutNeeded); pw.println(); pw.println(" Application tokens in top down Z order:"); Loading Loading @@ -1090,7 +1091,7 @@ class DisplayContent extends WindowContainer<TaskStack> { i -= lastBelow; if (i != numRemoved) { layoutNeeded = true; setLayoutNeeded(); Slog.w(TAG_WM, "On display=" + mDisplayId + " Rebuild removed " + numRemoved + " windows but added " + i + " rebuildAppWindowListLocked() " + " callers=" + Debug.getCallers(10)); Loading Loading @@ -1127,6 +1128,20 @@ class DisplayContent extends WindowContainer<TaskStack> { return windowList; } void setLayoutNeeded() { if (DEBUG_LAYOUT) Slog.w(TAG_WM, "setLayoutNeeded: callers=" + Debug.getCallers(3)); mLayoutNeeded = true; } void clearLayoutNeeded() { if (DEBUG_LAYOUT) Slog.w(TAG_WM, "clearLayoutNeeded: callers=" + Debug.getCallers(3)); mLayoutNeeded = false; } boolean isLayoutNeeded() { return mLayoutNeeded; } private int addAppWindowExisting(WindowState win, WindowList tokenWindowList) { int tokenWindowsPos; Loading
services/core/java/com/android/server/wm/RootWindowContainer.java +16 −17 Original line number Diff line number Diff line Loading @@ -29,7 +29,6 @@ import android.os.UserHandle; import android.provider.Settings; import android.util.EventLog; import android.util.Slog; import android.util.SparseArray; import android.util.SparseIntArray; import android.view.Display; import android.view.DisplayInfo; Loading Loading @@ -265,11 +264,11 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { return bounds; } boolean layoutNeeded() { boolean isLayoutNeeded() { final int numDisplays = mChildren.size(); for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) { final DisplayContent displayContent = mChildren.get(displayNdx); if (displayContent.layoutNeeded) { if (displayContent.isLayoutNeeded()) { return true; } } Loading Loading @@ -753,7 +752,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { } } if (layoutNeeded()) { if (isLayoutNeeded()) { defaultDisplay.pendingLayoutChanges |= FINISH_LAYOUT_REDO_LAYOUT; if (DEBUG_LAYOUT_REPEATS) surfacePlacer.debugLayoutRepeats("mLayoutNeeded", defaultDisplay.pendingLayoutChanges); Loading Loading @@ -840,13 +839,13 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { if (wallpaperDestroyed) { defaultDisplay.pendingLayoutChanges |= FINISH_LAYOUT_REDO_WALLPAPER; defaultDisplay.layoutNeeded = true; defaultDisplay.setLayoutNeeded(); } for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) { final DisplayContent displayContent = mChildren.get(displayNdx); if (displayContent.pendingLayoutChanges != 0) { displayContent.layoutNeeded = true; displayContent.setLayoutNeeded(); } } Loading Loading @@ -901,8 +900,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { } if (mService.mWaitingForDrawnCallback != null || (mOrientationChangeComplete && !defaultDisplay.layoutNeeded && !mUpdateRotation)) { (mOrientationChangeComplete && !defaultDisplay.isLayoutNeeded() && !mUpdateRotation)) { mService.checkDrawnWindowsLocked(); } Loading @@ -925,7 +924,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { for (DisplayContent displayContent : displayList) { mService.mLayersController.assignLayersLocked(displayContent.getWindowList()); displayContent.layoutNeeded = true; displayContent.setLayoutNeeded(); } } Loading @@ -951,7 +950,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { } // TODO: Super crazy long method that should be broken down... void applySurfaceChangesTransaction(boolean recoveringMemory, int defaultDw, int defaultDh) { private void applySurfaceChangesTransaction(boolean recoveringMemory, int defaultDw, int defaultDh) { mHoldScreenWindow = null; mObsuringWindow = null; Loading Loading @@ -993,7 +992,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { repeats++; if (repeats > 6) { Slog.w(TAG, "Animation repeat aborted after too many iterations"); dc.layoutNeeded = false; dc.clearLayoutNeeded(); break; } Loading @@ -1003,20 +1002,20 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { if ((dc.pendingLayoutChanges & FINISH_LAYOUT_REDO_WALLPAPER) != 0 && mService.mWallpaperControllerLocked.adjustWallpaperWindows()) { mService.mLayersController.assignLayersLocked(windows); dc.layoutNeeded = true; dc.setLayoutNeeded(); } if (isDefaultDisplay && (dc.pendingLayoutChanges & FINISH_LAYOUT_REDO_CONFIG) != 0) { if (DEBUG_LAYOUT) Slog.v(TAG, "Computing new config from layout"); if (mService.updateOrientationFromAppTokensLocked(true)) { dc.layoutNeeded = true; dc.setLayoutNeeded(); mService.mH.sendEmptyMessage(SEND_NEW_CONFIGURATION); } } if ((dc.pendingLayoutChanges & FINISH_LAYOUT_REDO_LAYOUT) != 0) { dc.layoutNeeded = true; dc.setLayoutNeeded(); } // FIRST LOOP: Perform a layout, if needed. Loading Loading @@ -1407,14 +1406,14 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { } void dumpLayoutNeededDisplayIds(PrintWriter pw) { if (!layoutNeeded()) { if (!isLayoutNeeded()) { return; } pw.print(" layoutNeeded on displays="); pw.print(" mLayoutNeeded on displays="); final int count = mChildren.size(); for (int displayNdx = 0; displayNdx < count; ++displayNdx) { final DisplayContent displayContent = mChildren.get(displayNdx); if (displayContent.layoutNeeded) { if (displayContent.isLayoutNeeded()) { pw.print(displayContent.getDisplayId()); } } Loading
services/core/java/com/android/server/wm/TaskStack.java +3 −3 Original line number Diff line number Diff line Loading @@ -230,7 +230,7 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye } } alignTasksToAdjustedBounds(adjusted ? mAdjustedBounds : mBounds, insetBounds); mDisplayContent.layoutNeeded = true; mDisplayContent.setLayoutNeeded(); } private void alignTasksToAdjustedBounds(Rect adjustedBounds, Rect tempInsetBounds) { Loading Loading @@ -598,7 +598,7 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye if (mChildren.isEmpty()) { mDisplayContent.moveStack(this, false); } mDisplayContent.layoutNeeded = true; mDisplayContent.setLayoutNeeded(); } for (int appNdx = mExitingAppTokens.size() - 1; appNdx >= 0; --appNdx) { final AppWindowToken wtoken = mExitingAppTokens.get(appNdx); Loading Loading @@ -1080,7 +1080,7 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye final Rect insetBounds = mImeGoingAway ? mBounds : mFullyAdjustedImeBounds; task.alignToAdjustedBounds(mAdjustedBounds, insetBounds, getDockSide() == DOCKED_TOP); mDisplayContent.layoutNeeded = true; mDisplayContent.setLayoutNeeded(); } boolean isAdjustedForMinimizedDockedStack() { Loading