Merge "Clear mResizedWhileNotDragResizing flag after reporting" into nyc-dev am: 7fae7be595 am: 67cae3965b

am: 2d334f4d02

* commit '2d334f4d02b230a1dbb895d4a9688bbd12d7451d':
  Clear mResizedWhileNotDragResizing flag after reporting

Change-Id: Ic9f69956f510db792b8159917fb06b6abb3ce84b
This commit is contained in:
Andrii Kulian
2016-05-19 18:10:00 +00:00
committed by android-build-merger
4 changed files with 40 additions and 13 deletions

View File

@@ -631,7 +631,7 @@ class Task implements DimLayer.DimLayerUser {
// windows since they aren't at the base layer and could be moved around anyway.
if (!win.computeDragResizing() && win.mAttrs.type == TYPE_BASE_APPLICATION &&
!mStack.getBoundsAnimating() && !win.isGoneForLayoutLw()) {
win.mResizedWhileNotDragResizing = true;
win.setResizedWhileNotDragResizing(true);
}
}
if (win.isGoneForLayoutLw()) {

View File

@@ -3072,9 +3072,9 @@ public class WindowManagerService extends IWindowManager.Stub
// If we're starting a drag-resize, we'll be changing the surface size as well as
// notifying the client to render to with an offset from the surface's top-left.
if (win.isDragResizeChanged() || win.mResizedWhileNotDragResizing) {
if (win.isDragResizeChanged() || win.isResizedWhileNotDragResizing()) {
win.setDragResizing();
win.mResizedWhileNotDragResizing = false;
win.setResizedWhileNotDragResizing(false);
// We can only change top level windows to the full-screen surface when
// resizing (as we only have one full-screen surface). So there is no need
// to preserve and destroy windows which are attached to another, they
@@ -9286,7 +9286,7 @@ public class WindowManagerService extends IWindowManager.Stub
|| w.mOutsetsChanged
|| configChanged
|| dragResizingChanged
|| w.mResizedWhileNotDragResizing) {
|| !w.isResizedWhileNotDragResizingReported()) {
if (DEBUG_RESIZE || DEBUG_ORIENTATION) {
Slog.v(TAG_WM, "Resize reasons for w=" + w + ": "
+ " contentInsetsChanged=" + w.mContentInsetsChanged
@@ -9300,7 +9300,8 @@ public class WindowManagerService extends IWindowManager.Stub
+ " surfaceResized=" + winAnimator.mSurfaceResized
+ " configChanged=" + configChanged
+ " dragResizingChanged=" + dragResizingChanged
+ " resizedWhileNotDragResizing=" + w.mResizedWhileNotDragResizing);
+ " resizedWhileNotDragResizingReported="
+ w.isResizedWhileNotDragResizingReported());
}
// If it's a dead window left on screen, and the configuration changed,
@@ -9322,7 +9323,7 @@ public class WindowManagerService extends IWindowManager.Stub
// we need to go through the process of getting informed by the
// application when it has finished drawing.
if (w.mOrientationChanging || dragResizingChanged
|| w.mResizedWhileNotDragResizing) {
|| w.isResizedWhileNotDragResizing()) {
if (DEBUG_SURFACE_TRACE || DEBUG_ANIM || DEBUG_ORIENTATION || DEBUG_RESIZE) {
Slog.v(TAG_WM, "Orientation or resize start waiting for draw"
+ ", mDrawState=DRAW_PENDING in " + w

View File

@@ -486,12 +486,11 @@ final class WindowState implements WindowManagerPolicy.WindowState {
*/
boolean mResizedWhileGone = false;
/**
* Indicates whether we got resized but drag resizing flag was false. In this case, we also
* need to recreate the surface and defer surface bound updates in order to make sure the
* buffer contents and the positioning/size stay in sync.
*/
boolean mResizedWhileNotDragResizing;
/** @see #isResizedWhileNotDragResizing(). */
private boolean mResizedWhileNotDragResizing;
/** @see #isResizedWhileNotDragResizingReported(). */
private boolean mResizedWhileNotDragResizingReported;
WindowState(WindowManagerService service, Session s, IWindow c, WindowToken token,
WindowState attachedWindow, int appOp, int seq, WindowManager.LayoutParams a,
@@ -2326,6 +2325,7 @@ final class WindowState implements WindowManagerPolicy.WindowState {
mVisibleInsetsChanged = false;
mStableInsetsChanged = false;
mOutsetsChanged = false;
mResizedWhileNotDragResizingReported = true;
mWinAnimator.mSurfaceResized = false;
} catch (RemoteException e) {
mOrientationChanging = false;
@@ -2428,6 +2428,32 @@ final class WindowState implements WindowManagerPolicy.WindowState {
mDragResizingChangeReported = false;
}
/**
* Set whether we got resized but drag resizing flag was false.
* @see #isResizedWhileNotDragResizing().
*/
void setResizedWhileNotDragResizing(boolean resizedWhileNotDragResizing) {
mResizedWhileNotDragResizing = resizedWhileNotDragResizing;
mResizedWhileNotDragResizingReported = !resizedWhileNotDragResizing;
}
/**
* Indicates whether we got resized but drag resizing flag was false. In this case, we also
* need to recreate the surface and defer surface bound updates in order to make sure the
* buffer contents and the positioning/size stay in sync.
*/
boolean isResizedWhileNotDragResizing() {
return mResizedWhileNotDragResizing;
}
/**
* @return Whether we reported "resize while not drag resizing" to the application.
* @see #isResizedWhileNotDragResizing()
*/
boolean isResizedWhileNotDragResizingReported() {
return mResizedWhileNotDragResizingReported;
}
int getResizeMode() {
return mResizeMode;
}

View File

@@ -1408,7 +1408,7 @@ class WindowStateAnimator {
final Task task = w.getTask();
// We got resized, so block all updates until we got the new surface.
if (w.mResizedWhileNotDragResizing && !w.isGoneForLayoutLw()) {
if (w.isResizedWhileNotDragResizing() && !w.isGoneForLayoutLw()) {
return;
}