diff options
author | 2025-03-20 19:29:24 +0800 | |
---|---|---|
committer | 2025-03-20 20:00:00 +0800 | |
commit | 743129f56e626b7f540a0db51112058b7069b791 (patch) | |
tree | c71f09a5c204ab4ded9e1bd1fe469795dc7bfead /libs/androidfw/AssetManager2.cpp | |
parent | 771c6c3eb7c34db2277963e227895d13661e6ad9 (diff) |
Update surface position while there is no surface animation playing
Previous logic uses getAnimationType to know if there will be a surface
update caused by the insets animation. However, if the animation is
played by the InsetsAnimationThreadControlRunner, the animation will be
finished first, and then the runner will post a message to the main UI
thread to remove the animation from mRunningAnimations. That would
produce a time that a control is not being animated, but
InsetsSourceConsumer still thinks it is being animated and skips
updating the surface position.
This CL creates a thread-safe method:
InsetsAnimationControlRunner#willUpdateSurface
which returns false if a runner is finished or cancelled, and
InsetsSourceConsumer can update the surface based on it.
Fix: 379967370
Fix: 394229693
Flag: EXEMPT bugfix
Test: Show gesture navigation bar from immersive mode and change the
screen orientation from landscape to portrait. Make sure the
navigation bar position is correct.
Change-Id: I1d84511082a50a56cda6ca060620b53a3261430f
Diffstat (limited to 'libs/androidfw/AssetManager2.cpp')
0 files changed, 0 insertions, 0 deletions