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
This commit is contained in:
Chong Zhang
2016-04-22 15:04:31 -07:00
parent 9ef0ce1749
commit edaf305651
2 changed files with 5 additions and 2 deletions

View File

@@ -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,

View File

@@ -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;
}