ScreenDecorations: Fix stuck / delayed rotations
Fixes the issue of stuck or delayed decor overlay rotations. The current logic cannot handle the case where the overlay has not finished rotating when we start another rotation. To work around that, we make sure that the rotation finishes fast enough for that not to happen, by decoupling it from the rest of SystemUI's traversals on a dedicated thread. Also fixes an issue in ScreenDecorations where we restarted drawing even though that was not needed, which further delayed finishing the rotation of the overlay. Also fixes an issue in ScreenDecorations where a spurious traversal after rotation started but before SysUI was notified could draw in the wrong orientation. To prevent that, we validate that our rotation matches the display rotation and restart the draw otherwise. In the future, we should investigate whether we can make this more robust by allowing stacked rotations, or forbidding rotations while the overlay is not done yet. We should also make the synchronization between WM and SysUI on what rotation is being drawn more explict and thus more robust. Change-Id: I5303a6a8e6392d309c0fe672ff6d1386ae18f235 Merged-In: Id8fe1c7f6b38de8cd3ce5f4170ea37adf8cb9f3d Bug: 111761727 Test: Ensure you have a lot of notifications, and enable cutout emulation, open camera, quickly rotate phone between landscape and portrait repeatedly, ensure there are no artifacts on screen. Test: atest ScreenDecorationsTest
Loading
Please register or sign in to comment