OSDN Git Service

Only restore saved surfaces in the last visible rotation.
authorRobert Carr <racarr@google.com>
Tue, 26 Jul 2016 17:39:45 +0000 (10:39 -0700)
committerRobert Carr <racarr@google.com>
Wed, 27 Jul 2016 18:09:42 +0000 (11:09 -0700)
commit237028ae3be891dd1dbc392a51fd768474de5df7
tree0ad1c76c1a4175cebd190d1b9f783aa25fdb56c8
parent52a11f7c64b6e3f94d4a2c35e3ee254a84b2a9f1
Only restore saved surfaces in the last visible rotation.

Sometimes we see a sequence like this when transitioning
between apps causes rotation changes.

1. New app becomes visible, causing the orientation to change
2. Old app gets marked as invisible, at this point its window
   are still visible from client, so surface is marked as eligible
   to be saved.
3. Old app calls relayout to invisible, we save surface.

Now if we restore the Surface it will be in the wrong orientation. It
never had a visible layout in the new one, it was just covered up
by the screenshot. To address this we track the rotation a window was
last visibily laid out in. If it doesn't match our current
rotation we can't use the saved surface.

Bug: 30171992
Change-Id: If814131810b6d01c5112afd145072a13a30b0401
services/core/java/com/android/server/wm/WindowManagerService.java
services/core/java/com/android/server/wm/WindowState.java