Loading services/core/java/com/android/server/wm/Task.java +1 −1 Original line number Diff line number Diff line Loading @@ -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()) { Loading services/core/java/com/android/server/wm/WindowManagerService.java +6 −5 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 Loading @@ -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, Loading @@ -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 Loading services/core/java/com/android/server/wm/WindowState.java +32 −6 Original line number Diff line number Diff line Loading @@ -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, Loading Loading @@ -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; Loading Loading @@ -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; } Loading services/core/java/com/android/server/wm/WindowStateAnimator.java +1 −1 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading
services/core/java/com/android/server/wm/Task.java +1 −1 Original line number Diff line number Diff line Loading @@ -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()) { Loading
services/core/java/com/android/server/wm/WindowManagerService.java +6 −5 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 Loading @@ -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, Loading @@ -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 Loading
services/core/java/com/android/server/wm/WindowState.java +32 −6 Original line number Diff line number Diff line Loading @@ -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, Loading Loading @@ -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; Loading Loading @@ -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; } Loading
services/core/java/com/android/server/wm/WindowStateAnimator.java +1 −1 Original line number Diff line number Diff line Loading @@ -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; } Loading