Loading services/core/java/com/android/server/policy/PhoneWindowManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -4575,7 +4575,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { // ... eventually calls finishWindowsDrawn which will finalize our screen turn on // as well as enabling the orientation change logic/sensor. mWindowManagerInternal.waitForAllWindowsDrawn(mWindowManagerDrawCallback, WAITING_FOR_DRAWN_TIMEOUT); WAITING_FOR_DRAWN_TIMEOUT, INVALID_DISPLAY); } // Called on the DisplayManager's DisplayPowerController thread. Loading services/core/java/com/android/server/wm/DisplayContent.java +0 −14 Original line number Diff line number Diff line Loading @@ -132,7 +132,6 @@ import static com.android.server.wm.WindowManagerService.dipToPixel; import static com.android.server.wm.WindowState.EXCLUSION_LEFT; import static com.android.server.wm.WindowState.EXCLUSION_RIGHT; import static com.android.server.wm.WindowState.RESIZE_HANDLE_WIDTH_IN_DP; import static com.android.server.wm.WindowStateAnimator.DRAW_PENDING; import static com.android.server.wm.WindowStateAnimator.READY_TO_SHOW; import static com.android.server.wm.utils.RegionUtils.forEachRectReverse; import static com.android.server.wm.utils.RegionUtils.rectListToRegion; Loading Loading @@ -3519,19 +3518,6 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo mWmService.mWindowPlacerLocked.performSurfacePlacement(); } void waitForAllWindowsDrawn() { final WindowManagerPolicy policy = mWmService.mPolicy; forAllWindows(w -> { final boolean keyguard = policy.isKeyguardHostWindow(w.mAttrs); if (w.isVisibleLw() && (w.mAppToken != null || keyguard)) { w.mWinAnimator.mDrawState = DRAW_PENDING; // Force add to mResizingWindows. w.resetLastContentInsets(); mWmService.mWaitingForDrawn.add(w); } }, true /* traverseTopToBottom */); } // TODO: Super crazy long method that should be broken down... void applySurfaceChangesTransaction(boolean recoveringMemory) { final WindowSurfacePlacer surfacePlacer = mWmService.mWindowPlacerLocked; Loading services/core/java/com/android/server/wm/DockedStackDividerController.java +9 −8 Original line number Diff line number Diff line Loading @@ -819,9 +819,12 @@ public class DockedStackDividerController { // We put all tasks into drag resizing mode - wait until all of them have completed the // drag resizing switch. if (!mService.mWaitingForDrawn.isEmpty()) { mService.mH.removeMessages(H.WAITING_FOR_DRAWN_TIMEOUT); mService.mH.sendEmptyMessageDelayed(H.WAITING_FOR_DRAWN_TIMEOUT, final Runnable existingWaitingForDrwanCallback = mService.mWaitingForDrawnCallbacks.get(mService.mRoot); if (existingWaitingForDrwanCallback != null) { mService.mH.removeMessages(H.WAITING_FOR_DRAWN_TIMEOUT, mService.mRoot); mService.mH.sendMessageDelayed(mService.mH.obtainMessage(H.WAITING_FOR_DRAWN_TIMEOUT, mService.mRoot), IME_ADJUST_DRAWN_TIMEOUT); mAnimationStartDelayed = true; if (imeWin != null) { Loading @@ -838,10 +841,8 @@ public class DockedStackDividerController { // still gets executed. // TODO: Have a real system where we can wait on different windows to be drawn with // different callbacks. if (mService.mWaitingForDrawnCallback != null) { mService.mWaitingForDrawnCallback.run(); } mService.mWaitingForDrawnCallback = () -> { existingWaitingForDrwanCallback.run(); mService.mWaitingForDrawnCallbacks.put(mService.mRoot, () -> { synchronized (mService.mGlobalLock) { mAnimationStartDelayed = false; if (mDelayedImeWin != null) { Loading @@ -863,7 +864,7 @@ public class DockedStackDividerController { notifyAdjustedForImeChanged( mAdjustedForIme || mAdjustedForDivider, duration); } }; }); } else { notifyAdjustedForImeChanged( adjustedForIme || adjustedForDivider, IME_ADJUST_ANIM_DURATION); Loading services/core/java/com/android/server/wm/RootWindowContainer.java +1 −1 Original line number Diff line number Diff line Loading @@ -720,7 +720,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> mUpdateRotation = updateRotationUnchecked(); } if (mWmService.mWaitingForDrawnCallback != null if (!mWmService.mWaitingForDrawnCallbacks.isEmpty() || (mOrientationChangeComplete && !isLayoutNeeded() && !mUpdateRotation)) { mWmService.checkDrawnWindowsLocked(); Loading services/core/java/com/android/server/wm/WindowContainer.java +21 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import static com.android.server.wm.WindowContainerProto.VISIBLE; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ANIM; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import static com.android.server.wm.WindowStateAnimator.DRAW_PENDING; import android.annotation.CallSuper; import android.annotation.IntDef; Loading @@ -54,9 +55,11 @@ import android.view.SurfaceSession; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ToBooleanFunction; import com.android.server.policy.WindowManagerPolicy; import com.android.server.wm.SurfaceAnimator.Animatable; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Comparator; import java.util.LinkedList; import java.util.function.Consumer; Loading Loading @@ -123,6 +126,11 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< // TODO(b/132320879): Remove this from WindowContainers except DisplayContent. private final Transaction mPendingTransaction; /** * Windows that clients are waiting to have drawn. */ final ArrayList<WindowState> mWaitingForDrawn = new ArrayList<>(); /** * Applied as part of the animation pass in "prepareSurfaces". */ Loading Loading @@ -1434,6 +1442,19 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< } } void waitForAllWindowsDrawn() { final WindowManagerPolicy policy = mWmService.mPolicy; forAllWindows(w -> { final boolean keyguard = policy.isKeyguardHostWindow(w.mAttrs); if (w.isVisibleLw() && (w.mAppToken != null || keyguard)) { w.mWinAnimator.mDrawState = DRAW_PENDING; // Force add to mResizingWindows. w.resetLastContentInsets(); mWaitingForDrawn.add(w); } }, true /* traverseTopToBottom */); } Dimmer getDimmer() { if (mParent == null) { return null; Loading Loading
services/core/java/com/android/server/policy/PhoneWindowManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -4575,7 +4575,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { // ... eventually calls finishWindowsDrawn which will finalize our screen turn on // as well as enabling the orientation change logic/sensor. mWindowManagerInternal.waitForAllWindowsDrawn(mWindowManagerDrawCallback, WAITING_FOR_DRAWN_TIMEOUT); WAITING_FOR_DRAWN_TIMEOUT, INVALID_DISPLAY); } // Called on the DisplayManager's DisplayPowerController thread. Loading
services/core/java/com/android/server/wm/DisplayContent.java +0 −14 Original line number Diff line number Diff line Loading @@ -132,7 +132,6 @@ import static com.android.server.wm.WindowManagerService.dipToPixel; import static com.android.server.wm.WindowState.EXCLUSION_LEFT; import static com.android.server.wm.WindowState.EXCLUSION_RIGHT; import static com.android.server.wm.WindowState.RESIZE_HANDLE_WIDTH_IN_DP; import static com.android.server.wm.WindowStateAnimator.DRAW_PENDING; import static com.android.server.wm.WindowStateAnimator.READY_TO_SHOW; import static com.android.server.wm.utils.RegionUtils.forEachRectReverse; import static com.android.server.wm.utils.RegionUtils.rectListToRegion; Loading Loading @@ -3519,19 +3518,6 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo mWmService.mWindowPlacerLocked.performSurfacePlacement(); } void waitForAllWindowsDrawn() { final WindowManagerPolicy policy = mWmService.mPolicy; forAllWindows(w -> { final boolean keyguard = policy.isKeyguardHostWindow(w.mAttrs); if (w.isVisibleLw() && (w.mAppToken != null || keyguard)) { w.mWinAnimator.mDrawState = DRAW_PENDING; // Force add to mResizingWindows. w.resetLastContentInsets(); mWmService.mWaitingForDrawn.add(w); } }, true /* traverseTopToBottom */); } // TODO: Super crazy long method that should be broken down... void applySurfaceChangesTransaction(boolean recoveringMemory) { final WindowSurfacePlacer surfacePlacer = mWmService.mWindowPlacerLocked; Loading
services/core/java/com/android/server/wm/DockedStackDividerController.java +9 −8 Original line number Diff line number Diff line Loading @@ -819,9 +819,12 @@ public class DockedStackDividerController { // We put all tasks into drag resizing mode - wait until all of them have completed the // drag resizing switch. if (!mService.mWaitingForDrawn.isEmpty()) { mService.mH.removeMessages(H.WAITING_FOR_DRAWN_TIMEOUT); mService.mH.sendEmptyMessageDelayed(H.WAITING_FOR_DRAWN_TIMEOUT, final Runnable existingWaitingForDrwanCallback = mService.mWaitingForDrawnCallbacks.get(mService.mRoot); if (existingWaitingForDrwanCallback != null) { mService.mH.removeMessages(H.WAITING_FOR_DRAWN_TIMEOUT, mService.mRoot); mService.mH.sendMessageDelayed(mService.mH.obtainMessage(H.WAITING_FOR_DRAWN_TIMEOUT, mService.mRoot), IME_ADJUST_DRAWN_TIMEOUT); mAnimationStartDelayed = true; if (imeWin != null) { Loading @@ -838,10 +841,8 @@ public class DockedStackDividerController { // still gets executed. // TODO: Have a real system where we can wait on different windows to be drawn with // different callbacks. if (mService.mWaitingForDrawnCallback != null) { mService.mWaitingForDrawnCallback.run(); } mService.mWaitingForDrawnCallback = () -> { existingWaitingForDrwanCallback.run(); mService.mWaitingForDrawnCallbacks.put(mService.mRoot, () -> { synchronized (mService.mGlobalLock) { mAnimationStartDelayed = false; if (mDelayedImeWin != null) { Loading @@ -863,7 +864,7 @@ public class DockedStackDividerController { notifyAdjustedForImeChanged( mAdjustedForIme || mAdjustedForDivider, duration); } }; }); } else { notifyAdjustedForImeChanged( adjustedForIme || adjustedForDivider, IME_ADJUST_ANIM_DURATION); Loading
services/core/java/com/android/server/wm/RootWindowContainer.java +1 −1 Original line number Diff line number Diff line Loading @@ -720,7 +720,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> mUpdateRotation = updateRotationUnchecked(); } if (mWmService.mWaitingForDrawnCallback != null if (!mWmService.mWaitingForDrawnCallbacks.isEmpty() || (mOrientationChangeComplete && !isLayoutNeeded() && !mUpdateRotation)) { mWmService.checkDrawnWindowsLocked(); Loading
services/core/java/com/android/server/wm/WindowContainer.java +21 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import static com.android.server.wm.WindowContainerProto.VISIBLE; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ANIM; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import static com.android.server.wm.WindowStateAnimator.DRAW_PENDING; import android.annotation.CallSuper; import android.annotation.IntDef; Loading @@ -54,9 +55,11 @@ import android.view.SurfaceSession; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ToBooleanFunction; import com.android.server.policy.WindowManagerPolicy; import com.android.server.wm.SurfaceAnimator.Animatable; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Comparator; import java.util.LinkedList; import java.util.function.Consumer; Loading Loading @@ -123,6 +126,11 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< // TODO(b/132320879): Remove this from WindowContainers except DisplayContent. private final Transaction mPendingTransaction; /** * Windows that clients are waiting to have drawn. */ final ArrayList<WindowState> mWaitingForDrawn = new ArrayList<>(); /** * Applied as part of the animation pass in "prepareSurfaces". */ Loading Loading @@ -1434,6 +1442,19 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< } } void waitForAllWindowsDrawn() { final WindowManagerPolicy policy = mWmService.mPolicy; forAllWindows(w -> { final boolean keyguard = policy.isKeyguardHostWindow(w.mAttrs); if (w.isVisibleLw() && (w.mAppToken != null || keyguard)) { w.mWinAnimator.mDrawState = DRAW_PENDING; // Force add to mResizingWindows. w.resetLastContentInsets(); mWaitingForDrawn.add(w); } }, true /* traverseTopToBottom */); } Dimmer getDimmer() { if (mParent == null) { return null; Loading