From c67c2a91dde9983d17fbfa582a8fae7d7ba83c8a Mon Sep 17 00:00:00 2001 From: Robert Carr Date: Thu, 22 Sep 2016 13:25:45 -0700 Subject: [PATCH] Don't halt movement notifications when display is frozen. Halting movement notifications while the display is frozen can result in failure to deliver them in rotation scenarios. Bug: 31313118 Change-Id: I41708ceb10d193fda95cdd715dde0509102dcbbf --- .../core/java/com/android/server/wm/WindowState.java | 2 +- .../com/android/server/wm/WindowSurfacePlacer.java | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 1fa0783e0cab8..55bf39472b7bf 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -1418,7 +1418,7 @@ final class WindowState implements WindowManagerPolicy.WindowState { */ boolean hasMoved() { return mHasSurface && (mContentChanged || mMovedByResize) - && !mAnimatingExit && mService.okToDisplay() + && !mAnimatingExit && (mFrame.top != mLastFrame.top || mFrame.left != mLastFrame.left) && (mAttachedWindow == null || !mAttachedWindow.hasMoved()); } diff --git a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java index 5a79da938c605..b8a388d964fd0 100644 --- a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java +++ b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java @@ -717,11 +717,13 @@ class WindowSurfacePlacer { final boolean adjustedForMinimizedDockOrIme = task != null && (task.mStack.isAdjustedForMinimizedDockedStack() || task.mStack.isAdjustedForIme()); - if ((w.mAttrs.privateFlags & PRIVATE_FLAG_NO_MOVE_ANIMATION) == 0 - && !w.isDragResizing() && !adjustedForMinimizedDockOrIme - && (task == null || w.getTask().mStack.hasMovementAnimations()) - && !w.mWinAnimator.mLastHidden) { - winAnimator.setMoveAnimation(left, top); + if (mService.okToDisplay()) { + if ((w.mAttrs.privateFlags & PRIVATE_FLAG_NO_MOVE_ANIMATION) == 0 + && !w.isDragResizing() && !adjustedForMinimizedDockOrIme + && (task == null || w.getTask().mStack.hasMovementAnimations()) + && !w.mWinAnimator.mLastHidden) { + winAnimator.setMoveAnimation(left, top); + } } //TODO (multidisplay): Accessibility supported only for the default display.