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 Original line Diff line number Diff line
@@ -429,7 +429,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
        for (int i = 0; i < displayList.size(); i++) {
        for (int i = 0; i < displayList.size(); i++) {
            final DisplayContent displayContent = displayList.get(i);
            final DisplayContent displayContent = displayList.get(i);
            mService.mLayersController.assignLayersLocked(displayContent.getWindowList());
            mService.mLayersController.assignLayersLocked(displayContent.getWindowList());
            displayContent.layoutNeeded = true;
            displayContent.setLayoutNeeded();
        }
        }
    }
    }


@@ -957,7 +957,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree


            mService.updateFocusedWindowLocked(
            mService.updateFocusedWindowLocked(
                    UPDATE_FOCUS_WILL_PLACE_SURFACES, true /*updateInputWindows*/);
                    UPDATE_FOCUS_WILL_PLACE_SURFACES, true /*updateInputWindows*/);
            mService.getDefaultDisplayContentLocked().layoutNeeded = true;
            mService.getDefaultDisplayContentLocked().setLayoutNeeded();
            mService.mWindowPlacerLocked.performSurfacePlacement();
            mService.mWindowPlacerLocked.performSurfacePlacement();
            Binder.restoreCallingIdentity(origId);
            Binder.restoreCallingIdentity(origId);
            return true;
            return true;
@@ -1065,7 +1065,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
                allDrawn = true;
                allDrawn = true;
                // Force an additional layout pass where
                // Force an additional layout pass where
                // WindowStateAnimator#commitFinishDrawingLocked() will call performShowLocked().
                // WindowStateAnimator#commitFinishDrawingLocked() will call performShowLocked().
                displayContent.layoutNeeded = true;
                displayContent.setLayoutNeeded();
                mService.mH.obtainMessage(NOTIFY_ACTIVITY_DRAWN, token).sendToTarget();
                mService.mH.obtainMessage(NOTIFY_ACTIVITY_DRAWN, token).sendToTarget();
            }
            }
        }
        }
@@ -1076,7 +1076,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
                        + " interesting=" + numInteresting
                        + " interesting=" + numInteresting
                        + " drawn=" + numDrawnWindowsExcludingSaved);
                        + " drawn=" + numDrawnWindowsExcludingSaved);
                allDrawnExcludingSaved = true;
                allDrawnExcludingSaved = true;
                displayContent.layoutNeeded = true;
                displayContent.setLayoutNeeded();
                if (isAnimatingInvisibleWithSavedSurface()
                if (isAnimatingInvisibleWithSavedSurface()
                        && !mService.mFinishedEarlyAnim.contains(this)) {
                        && !mService.mFinishedEarlyAnim.contains(this)) {
                    mService.mFinishedEarlyAnim.add(this);
                    mService.mFinishedEarlyAnim.add(this);
+1 −1
Original line number Original line Diff line number Diff line
@@ -256,7 +256,7 @@ class DimLayerController {
                // on whether a dim layer is showing or not.
                // on whether a dim layer is showing or not.
                if (targetAlpha == 0) {
                if (targetAlpha == 0) {
                    mDisplayContent.pendingLayoutChanges |= FINISH_LAYOUT_REDO_LAYOUT;
                    mDisplayContent.pendingLayoutChanges |= FINISH_LAYOUT_REDO_LAYOUT;
                    mDisplayContent.layoutNeeded = true;
                    mDisplayContent.setLayoutNeeded();
                }
                }
            }
            }
        } else if (state.dimLayer.getLayer() != dimLayer) {
        } else if (state.dimLayer.getLayer() != dimLayer) {
+20 −5
Original line number Original line 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_DISPLAY;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_FOCUS;
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_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_WINDOW_MOVEMENT;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_VISIBILITY;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_VISIBILITY;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ORIENTATION;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ORIENTATION;
@@ -100,7 +101,7 @@ class DisplayContent extends WindowContainer<TaskStack> {
    private Rect mContentRect = new Rect();
    private Rect mContentRect = new Rect();


    // Accessed directly by all users.
    // Accessed directly by all users.
    boolean layoutNeeded;
    private boolean mLayoutNeeded;
    int pendingLayoutChanges;
    int pendingLayoutChanges;
    final boolean isDefaultDisplay;
    final boolean isDefaultDisplay;


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


    /**
    /**
@@ -684,8 +685,8 @@ class DisplayContent extends WindowContainer<TaskStack> {
            pw.print("x"); pw.print(mDisplayInfo.smallestNominalAppHeight);
            pw.print("x"); pw.print(mDisplayInfo.smallestNominalAppHeight);
            pw.print("-"); pw.print(mDisplayInfo.largestNominalAppWidth);
            pw.print("-"); pw.print(mDisplayInfo.largestNominalAppWidth);
            pw.print("x"); pw.println(mDisplayInfo.largestNominalAppHeight);
            pw.print("x"); pw.println(mDisplayInfo.largestNominalAppHeight);
            pw.print(subPrefix); pw.print("deferred="); pw.print(mDeferredRemoval);
            pw.println(subPrefix + "deferred=" + mDeferredRemoval
                pw.print(" layoutNeeded="); pw.println(layoutNeeded);
                    + " mLayoutNeeded=" + mLayoutNeeded);


        pw.println();
        pw.println();
        pw.println("  Application tokens in top down Z order:");
        pw.println("  Application tokens in top down Z order:");
@@ -1090,7 +1091,7 @@ class DisplayContent extends WindowContainer<TaskStack> {


        i -= lastBelow;
        i -= lastBelow;
        if (i != numRemoved) {
        if (i != numRemoved) {
            layoutNeeded = true;
            setLayoutNeeded();
            Slog.w(TAG_WM, "On display=" + mDisplayId + " Rebuild removed " + numRemoved
            Slog.w(TAG_WM, "On display=" + mDisplayId + " Rebuild removed " + numRemoved
                    + " windows but added " + i + " rebuildAppWindowListLocked() "
                    + " windows but added " + i + " rebuildAppWindowListLocked() "
                    + " callers=" + Debug.getCallers(10));
                    + " callers=" + Debug.getCallers(10));
@@ -1127,6 +1128,20 @@ class DisplayContent extends WindowContainer<TaskStack> {
        return windowList;
        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) {
    private int addAppWindowExisting(WindowState win, WindowList tokenWindowList) {


        int tokenWindowsPos;
        int tokenWindowsPos;
+16 −17
Original line number Original line Diff line number Diff line
@@ -29,7 +29,6 @@ import android.os.UserHandle;
import android.provider.Settings;
import android.provider.Settings;
import android.util.EventLog;
import android.util.EventLog;
import android.util.Slog;
import android.util.Slog;
import android.util.SparseArray;
import android.util.SparseIntArray;
import android.util.SparseIntArray;
import android.view.Display;
import android.view.Display;
import android.view.DisplayInfo;
import android.view.DisplayInfo;
@@ -265,11 +264,11 @@ class RootWindowContainer extends WindowContainer<DisplayContent> {
        return bounds;
        return bounds;
    }
    }


    boolean layoutNeeded() {
    boolean isLayoutNeeded() {
        final int numDisplays = mChildren.size();
        final int numDisplays = mChildren.size();
        for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
        for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
            final DisplayContent displayContent = mChildren.get(displayNdx);
            final DisplayContent displayContent = mChildren.get(displayNdx);
            if (displayContent.layoutNeeded) {
            if (displayContent.isLayoutNeeded()) {
                return true;
                return true;
            }
            }
        }
        }
@@ -753,7 +752,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> {
            }
            }
        }
        }


        if (layoutNeeded()) {
        if (isLayoutNeeded()) {
            defaultDisplay.pendingLayoutChanges |= FINISH_LAYOUT_REDO_LAYOUT;
            defaultDisplay.pendingLayoutChanges |= FINISH_LAYOUT_REDO_LAYOUT;
            if (DEBUG_LAYOUT_REPEATS) surfacePlacer.debugLayoutRepeats("mLayoutNeeded",
            if (DEBUG_LAYOUT_REPEATS) surfacePlacer.debugLayoutRepeats("mLayoutNeeded",
                    defaultDisplay.pendingLayoutChanges);
                    defaultDisplay.pendingLayoutChanges);
@@ -840,13 +839,13 @@ class RootWindowContainer extends WindowContainer<DisplayContent> {


        if (wallpaperDestroyed) {
        if (wallpaperDestroyed) {
            defaultDisplay.pendingLayoutChanges |= FINISH_LAYOUT_REDO_WALLPAPER;
            defaultDisplay.pendingLayoutChanges |= FINISH_LAYOUT_REDO_WALLPAPER;
            defaultDisplay.layoutNeeded = true;
            defaultDisplay.setLayoutNeeded();
        }
        }


        for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
        for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
            final DisplayContent displayContent = mChildren.get(displayNdx);
            final DisplayContent displayContent = mChildren.get(displayNdx);
            if (displayContent.pendingLayoutChanges != 0) {
            if (displayContent.pendingLayoutChanges != 0) {
                displayContent.layoutNeeded = true;
                displayContent.setLayoutNeeded();
            }
            }
        }
        }


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


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


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


            for (DisplayContent displayContent : displayList) {
            for (DisplayContent displayContent : displayList) {
                mService.mLayersController.assignLayersLocked(displayContent.getWindowList());
                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...
    // 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;
        mHoldScreenWindow = null;
        mObsuringWindow = null;
        mObsuringWindow = null;


@@ -993,7 +992,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> {
                repeats++;
                repeats++;
                if (repeats > 6) {
                if (repeats > 6) {
                    Slog.w(TAG, "Animation repeat aborted after too many iterations");
                    Slog.w(TAG, "Animation repeat aborted after too many iterations");
                    dc.layoutNeeded = false;
                    dc.clearLayoutNeeded();
                    break;
                    break;
                }
                }


@@ -1003,20 +1002,20 @@ class RootWindowContainer extends WindowContainer<DisplayContent> {
                if ((dc.pendingLayoutChanges & FINISH_LAYOUT_REDO_WALLPAPER) != 0
                if ((dc.pendingLayoutChanges & FINISH_LAYOUT_REDO_WALLPAPER) != 0
                        && mService.mWallpaperControllerLocked.adjustWallpaperWindows()) {
                        && mService.mWallpaperControllerLocked.adjustWallpaperWindows()) {
                    mService.mLayersController.assignLayersLocked(windows);
                    mService.mLayersController.assignLayersLocked(windows);
                    dc.layoutNeeded = true;
                    dc.setLayoutNeeded();
                }
                }


                if (isDefaultDisplay
                if (isDefaultDisplay
                        && (dc.pendingLayoutChanges & FINISH_LAYOUT_REDO_CONFIG) != 0) {
                        && (dc.pendingLayoutChanges & FINISH_LAYOUT_REDO_CONFIG) != 0) {
                    if (DEBUG_LAYOUT) Slog.v(TAG, "Computing new config from layout");
                    if (DEBUG_LAYOUT) Slog.v(TAG, "Computing new config from layout");
                    if (mService.updateOrientationFromAppTokensLocked(true)) {
                    if (mService.updateOrientationFromAppTokensLocked(true)) {
                        dc.layoutNeeded = true;
                        dc.setLayoutNeeded();
                        mService.mH.sendEmptyMessage(SEND_NEW_CONFIGURATION);
                        mService.mH.sendEmptyMessage(SEND_NEW_CONFIGURATION);
                    }
                    }
                }
                }


                if ((dc.pendingLayoutChanges & FINISH_LAYOUT_REDO_LAYOUT) != 0) {
                if ((dc.pendingLayoutChanges & FINISH_LAYOUT_REDO_LAYOUT) != 0) {
                    dc.layoutNeeded = true;
                    dc.setLayoutNeeded();
                }
                }


                // FIRST LOOP: Perform a layout, if needed.
                // FIRST LOOP: Perform a layout, if needed.
@@ -1407,14 +1406,14 @@ class RootWindowContainer extends WindowContainer<DisplayContent> {
    }
    }


    void dumpLayoutNeededDisplayIds(PrintWriter pw) {
    void dumpLayoutNeededDisplayIds(PrintWriter pw) {
        if (!layoutNeeded()) {
        if (!isLayoutNeeded()) {
            return;
            return;
        }
        }
        pw.print("  layoutNeeded on displays=");
        pw.print("  mLayoutNeeded on displays=");
        final int count = mChildren.size();
        final int count = mChildren.size();
        for (int displayNdx = 0; displayNdx < count; ++displayNdx) {
        for (int displayNdx = 0; displayNdx < count; ++displayNdx) {
            final DisplayContent displayContent = mChildren.get(displayNdx);
            final DisplayContent displayContent = mChildren.get(displayNdx);
            if (displayContent.layoutNeeded) {
            if (displayContent.isLayoutNeeded()) {
                pw.print(displayContent.getDisplayId());
                pw.print(displayContent.getDisplayId());
            }
            }
        }
        }
+3 −3
Original line number Original line Diff line number Diff line
@@ -230,7 +230,7 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye
            }
            }
        }
        }
        alignTasksToAdjustedBounds(adjusted ? mAdjustedBounds : mBounds, insetBounds);
        alignTasksToAdjustedBounds(adjusted ? mAdjustedBounds : mBounds, insetBounds);
        mDisplayContent.layoutNeeded = true;
        mDisplayContent.setLayoutNeeded();
    }
    }


    private void alignTasksToAdjustedBounds(Rect adjustedBounds, Rect tempInsetBounds) {
    private void alignTasksToAdjustedBounds(Rect adjustedBounds, Rect tempInsetBounds) {
@@ -598,7 +598,7 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye
            if (mChildren.isEmpty()) {
            if (mChildren.isEmpty()) {
                mDisplayContent.moveStack(this, false);
                mDisplayContent.moveStack(this, false);
            }
            }
            mDisplayContent.layoutNeeded = true;
            mDisplayContent.setLayoutNeeded();
        }
        }
        for (int appNdx = mExitingAppTokens.size() - 1; appNdx >= 0; --appNdx) {
        for (int appNdx = mExitingAppTokens.size() - 1; appNdx >= 0; --appNdx) {
            final AppWindowToken wtoken = mExitingAppTokens.get(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;
        final Rect insetBounds = mImeGoingAway ? mBounds : mFullyAdjustedImeBounds;
        task.alignToAdjustedBounds(mAdjustedBounds, insetBounds, getDockSide() == DOCKED_TOP);
        task.alignToAdjustedBounds(mAdjustedBounds, insetBounds, getDockSide() == DOCKED_TOP);
        mDisplayContent.layoutNeeded = true;
        mDisplayContent.setLayoutNeeded();
    }
    }


    boolean isAdjustedForMinimizedDockedStack() {
    boolean isAdjustedForMinimizedDockedStack() {
Loading