From a13a41dc0ed049319c3a6b51d1f35b0b1c20d81b Mon Sep 17 00:00:00 2001 From: Craig Mautner Date: Tue, 16 Oct 2012 12:53:13 -0700 Subject: Perform all layouts within first loop. Do not begin animation while layout requests are still outstanding. Bug: 7333622 fixed. Change-Id: I77c2cdc123c1e26f9661feade0d9a1843c75d5f6 --- services/java/com/android/server/wm/WindowManagerService.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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!"); -- cgit v1.2.3-59-g8ed1b