Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2b06bfc6 authored by Wale Ogunwale's avatar Wale Ogunwale
Browse files

Made DisplayContent.mLayoutNeeded private scoped.

And, added accessor methods for it to make it easier to
debug who is setting it.

Bug: 31794753
Test: Existing tests pass.
Change-Id: I517c3e5cc7535cb90c47c112d42fa1dbf0b81583
parent 5b02bb41
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -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();
        }
    }

@@ -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;
@@ -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();
            }
        }
@@ -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);
+1 −1
Original line number Diff line number Diff line
@@ -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) {
+20 −5
Original line number Diff line number Diff line
@@ -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;
@@ -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;

@@ -367,7 +368,7 @@ class DisplayContent extends WindowContainer<TaskStack> {
            }
        }
        addChild(stack, addIndex);
        layoutNeeded = true;
        setLayoutNeeded();
    }

    /**
@@ -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:");
@@ -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));
@@ -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;
+16 −17
Original line number Diff line number Diff line
@@ -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;
@@ -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;
            }
        }
@@ -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);
@@ -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();
            }
        }

@@ -901,8 +900,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent> {
        }

        if (mService.mWaitingForDrawnCallback != null ||
                (mOrientationChangeComplete && !defaultDisplay.layoutNeeded &&
                        !mUpdateRotation)) {
                (mOrientationChangeComplete && !defaultDisplay.isLayoutNeeded()
                        && !mUpdateRotation)) {
            mService.checkDrawnWindowsLocked();
        }

@@ -925,7 +924,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> {

            for (DisplayContent displayContent : displayList) {
                mService.mLayersController.assignLayersLocked(displayContent.getWindowList());
                displayContent.layoutNeeded = true;
                displayContent.setLayoutNeeded();
            }
        }

@@ -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;

@@ -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;
                }

@@ -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.
@@ -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());
            }
        }
+3 −3
Original line number Diff line number Diff line
@@ -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) {
@@ -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);
@@ -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