diff options
| author | 2012-10-16 12:53:13 -0700 | |
|---|---|---|
| committer | 2012-10-16 12:54:48 -0700 | |
| commit | a13a41dc0ed049319c3a6b51d1f35b0b1c20d81b (patch) | |
| tree | e5b312e3f7d00f04106d857104fbbd84430125e3 | |
| parent | f6dbd61b108e586c1db3e61cbfc07d4d750027c0 (diff) | |
Perform all layouts within first loop.
Do not begin animation while layout requests are still
outstanding.
Bug: 7333622 fixed.
Change-Id: I77c2cdc123c1e26f9661feade0d9a1843c75d5f6
| -rwxr-xr-x | services/java/com/android/server/wm/WindowManagerService.java | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index c3418727e338..5b0f4fb3ccae 100755 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -8117,8 +8117,16 @@ public class WindowManagerService extends IWindowManager.Stub } } - private boolean mInLayout = false; private final void performLayoutAndPlaceSurfacesLocked() { + do { + mTraversalScheduled = false; + performLayoutAndPlaceSurfacesLockedLoop(); + mH.removeMessages(H.DO_TRAVERSAL); + } while (mTraversalScheduled); + } + + private boolean mInLayout = false; + private final void performLayoutAndPlaceSurfacesLockedLoop() { if (mInLayout) { if (DEBUG) { throw new RuntimeException("Recursive call!"); |