diff options
author | Craig Mautner <cmautner@google.com> | 2012-10-16 12:53:13 -0700 |
---|---|---|
committer | Craig Mautner <cmautner@google.com> | 2012-10-16 12:54:48 -0700 |
commit | a13a41dc0ed049319c3a6b51d1f35b0b1c20d81b (patch) | |
tree | e5b312e3f7d00f04106d857104fbbd84430125e3 | |
parent | f6dbd61b108e586c1db3e61cbfc07d4d750027c0 (diff) | |
download | frameworks_base-a13a41dc0ed049319c3a6b51d1f35b0b1c20d81b.zip frameworks_base-a13a41dc0ed049319c3a6b51d1f35b0b1c20d81b.tar.gz frameworks_base-a13a41dc0ed049319c3a6b51d1f35b0b1c20d81b.tar.bz2 |
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 c341872..5b0f4fb 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!"); |