Loading services/core/java/com/android/server/wm/DisplayContent.java +2 −0 Original line number Diff line number Diff line Loading @@ -776,6 +776,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp if (mTmpInitial) { w.resetContentChanged(); } w.mSurfacePlacementNeeded = true; w.mLayoutNeeded = false; w.prelayout(); final boolean firstLayout = !w.isLaidOut(); Loading Loading @@ -818,6 +819,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp //Slog.i(TAG, "Window " + this + " clearing mContentChanged - initial"); w.resetContentChanged(); } w.mSurfacePlacementNeeded = true; w.mLayoutNeeded = false; w.prelayout(); getDisplayPolicy().layoutWindowLw(w, w.getParentWindow(), mDisplayFrames); Loading services/core/java/com/android/server/wm/WindowState.java +12 −2 Original line number Diff line number Diff line Loading @@ -513,6 +513,13 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP */ boolean mLayoutNeeded; /** * If the application is not currently visible but requires a layout, * then make sure we call performSurfacePlacement as well. This is set * in layout if mLayoutNeeded is set until surface placement is done. */ boolean mSurfacePlacementNeeded; /** Currently running an exit animation? */ boolean mAnimatingExit; Loading Loading @@ -5367,7 +5374,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP mIsDimming = false; applyDims(); updateSurfacePositionNonOrganized(); // Send information to SufaceFlinger about the priority of the current window. // Send information to SurfaceFlinger about the priority of the current window. updateFrameRateSelectionPriorityIfNeeded(); if (isVisibleRequested()) updateGlobalScaleIfNeeded(); Loading @@ -5381,13 +5388,16 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP if (mSurfaceControl == null) { return; } if (mWmService.mWindowPlacerLocked.isLayoutDeferred() || isGoneForLayout()) { if ((mWmService.mWindowPlacerLocked.isLayoutDeferred() || isGoneForLayout()) && !mSurfacePlacementNeeded) { // Since this relies on mWindowFrames, changes made while layout is deferred are // likely to be invalid. Similarly, if it's goneForLayout, mWindowFrames may not be // up-to-date and thus can't be relied on. return; } mSurfacePlacementNeeded = false; transformFrameToSurfacePosition(mWindowFrames.mFrame.left, mWindowFrames.mFrame.top, mSurfacePosition); Loading Loading
services/core/java/com/android/server/wm/DisplayContent.java +2 −0 Original line number Diff line number Diff line Loading @@ -776,6 +776,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp if (mTmpInitial) { w.resetContentChanged(); } w.mSurfacePlacementNeeded = true; w.mLayoutNeeded = false; w.prelayout(); final boolean firstLayout = !w.isLaidOut(); Loading Loading @@ -818,6 +819,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp //Slog.i(TAG, "Window " + this + " clearing mContentChanged - initial"); w.resetContentChanged(); } w.mSurfacePlacementNeeded = true; w.mLayoutNeeded = false; w.prelayout(); getDisplayPolicy().layoutWindowLw(w, w.getParentWindow(), mDisplayFrames); Loading
services/core/java/com/android/server/wm/WindowState.java +12 −2 Original line number Diff line number Diff line Loading @@ -513,6 +513,13 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP */ boolean mLayoutNeeded; /** * If the application is not currently visible but requires a layout, * then make sure we call performSurfacePlacement as well. This is set * in layout if mLayoutNeeded is set until surface placement is done. */ boolean mSurfacePlacementNeeded; /** Currently running an exit animation? */ boolean mAnimatingExit; Loading Loading @@ -5367,7 +5374,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP mIsDimming = false; applyDims(); updateSurfacePositionNonOrganized(); // Send information to SufaceFlinger about the priority of the current window. // Send information to SurfaceFlinger about the priority of the current window. updateFrameRateSelectionPriorityIfNeeded(); if (isVisibleRequested()) updateGlobalScaleIfNeeded(); Loading @@ -5381,13 +5388,16 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP if (mSurfaceControl == null) { return; } if (mWmService.mWindowPlacerLocked.isLayoutDeferred() || isGoneForLayout()) { if ((mWmService.mWindowPlacerLocked.isLayoutDeferred() || isGoneForLayout()) && !mSurfacePlacementNeeded) { // Since this relies on mWindowFrames, changes made while layout is deferred are // likely to be invalid. Similarly, if it's goneForLayout, mWindowFrames may not be // up-to-date and thus can't be relied on. return; } mSurfacePlacementNeeded = false; transformFrameToSurfacePosition(mWindowFrames.mFrame.left, mWindowFrames.mFrame.top, mSurfacePosition); Loading