From edaf305651ad56de9f024f5746619ac139b2e52d Mon Sep 17 00:00:00 2001 From: Chong Zhang Date: Fri, 22 Apr 2016 15:04:31 -0700 Subject: [PATCH] Force a relayout when task is resized while not drag resizing. mResizedWhileNotDragResizing is set is task bounds is resized, however individual window's size may not change (eg. a floating dialog). The relayout window may not come and the mResizedWhileNotDragResizing flag won't get cleared. bug: 28111853 Change-Id: If8bb79cc07d9c67d6e5685b0adc24a9ce2623ec6 --- .../core/java/com/android/server/wm/WindowManagerService.java | 3 ++- services/core/java/com/android/server/wm/WindowState.java | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index ff63632852297..32aa05d842457 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -9137,7 +9137,8 @@ public class WindowManagerService extends IWindowManager.Stub + " " + w.mOutsets.toShortString() + " surfaceResized=" + winAnimator.mSurfaceResized + " configChanged=" + configChanged - + " dragResizingChanged=" + dragResizingChanged); + + " dragResizingChanged=" + dragResizingChanged + + " resizedWhileNotDragResizing=" + w.mResizedWhileNotDragResizing); } // If it's a dead window left on screen, and the configuration changed, diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 76fdda0175f0f..2c5b035741569 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -2266,9 +2266,11 @@ final class WindowState implements WindowManagerPolicy.WindowState { private void dispatchResized(Rect frame, Rect overscanInsets, Rect contentInsets, Rect visibleInsets, Rect stableInsets, Rect outsets, boolean reportDraw, Configuration newConfig) throws RemoteException { + final boolean forceRelayout = isDragResizeChanged() || mResizedWhileNotDragResizing; + mClient.resized(frame, overscanInsets, contentInsets, visibleInsets, stableInsets, outsets, reportDraw, newConfig, getBackdropFrame(frame), - isDragResizeChanged() /* forceRelayout */, mPolicy.isNavBarForcedShownLw(this)); + forceRelayout, mPolicy.isNavBarForcedShownLw(this)); mDragResizingChangeReported = true; }