Re-land: Make window stable while resizing
When the frame size and the frame position of the window are changed at the same time, setPosition to the surface will be applied first, and the client will draw on the new-size buffer later, which makes the window flicker. This CL uses applyWithNextDraw to make the new surface position can be applied while the new frame is drawn. applyWithNextDraw is applied only when - the window doesn't have a move animation. So if a window needs to make resizing stable, it may need PRIVATE_FLAG_NO_MOVE_ANIMATION. - it is visible, e.g., the surface is shown, and the window is OK to display -- for better performance. If applyWithNextDraw is used while the window frame is changed to an empty rectangle, e.g., Rect(10, 10 - 1000, 10), mNextDrawUseBlastSync will stay true forever, because we don't draw while the dirty area is empty, and ViewRootImpl would lose the only chance to clear the flag. performTraversals will never be executed. This CL makes mNextDrawUseBlastSync can be cleared in that case. Bug: 182729646 Fix: 176874720 Test: steps in the bug Change-Id: I81b0574ee8db7e4d9053639f56e04858d9feae90
Loading
Please register or sign in to comment