Fix 2 graphical issues for drag resizing.
1. There used to be double offset from the origin. This is because we used to (in NYC) make the surface position to display origin and draw content with a offset in the surface. However we lately let the surface position be inherited from task surface position, so there will be an offset from surface position and an offset from drawing content in that surface. To fix the bug I removed the offset in drawing content. That offset is provided by WindowState#getBackdropFrame() so it just solved the issue by moving frame to the origin. 2. Window quickly jumps when user starts drag resizing a window. The reason is out of synchronization between surface insets change and graphical buffer update. When user is drag resizing, we suppress window shadow to save some graphical resources, which will consequently change surface insets. Change in surface insets will cause the surface being repositioned to reflect the new surface insets because window frame doesn't change. However the content is still drawn at old location with old surface insets for the first a few frames, so the content jumps to a wrong location for a split second. This also happens when users stop drag resizing. I kept the old surface insets when user is resizing so there won't be surface reposition at the beginning and end of drag resizing, but still suppress the shadow by adjusting the elevation of DecorView. Also fixed a synchronization issue we found in BackdropFrameRenderer, and cleaned up code in it. Bug: 113254346 Test: Manual tests show drag resizing for both freeform and split screen works. Change-Id: I42349f88f14af35fac7c65e784462b5f2e1a71c7
Loading
Please register or sign in to comment