diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 1c56d3ce78c01..302ed026b35d3 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -9186,6 +9186,18 @@ public class WindowManagerService extends IWindowManager.Stub void updateResizingWindows(final WindowState w) { final WindowStateAnimator winAnimator = w.mWinAnimator; if (w.mHasSurface && w.mLayoutSeq == mLayoutSeq && !w.isGoneForLayoutLw()) { + final Task task = w.getTask(); + // In the case of stack bound animations, the window frames + // will update (unlike other animations which just modifiy + // various transformation properties). We don't want to + // notify the client of frame changes in this case. Not only + // is it a lot of churn, but the frame may not correspond + // to the surface size or the onscreen area at various + // phases in the animation, and the client will become + // sad and confused. + if (task != null && task.mStack.getBoundsAnimating()) { + return; + } w.setInsetsChanged(); boolean configChanged = w.isConfigChanged(); if (DEBUG_CONFIGURATION && configChanged) {