summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/Task.java2
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java11
-rw-r--r--services/core/java/com/android/server/wm/WindowState.java38
-rw-r--r--services/core/java/com/android/server/wm/WindowStateAnimator.java2
4 files changed, 40 insertions, 13 deletions
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 0d3535495aff..f0808acee636 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -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()) {
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 3e8e50258e6e..82cd0fa0c25d 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -3066,9 +3066,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
@@ -9272,7 +9272,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
@@ -9286,7 +9286,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,
@@ -9308,7 +9309,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
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index 25709548254f..e5e74a663eb0 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -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;
}
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java
index 54c421406ebc..aea395de6c0f 100644
--- a/services/core/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java
@@ -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;
}