summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCraig Mautner <cmautner@google.com>2012-10-16 12:53:13 -0700
committerCraig Mautner <cmautner@google.com>2012-10-16 12:54:48 -0700
commita13a41dc0ed049319c3a6b51d1f35b0b1c20d81b (patch)
treee5b312e3f7d00f04106d857104fbbd84430125e3
parentf6dbd61b108e586c1db3e61cbfc07d4d750027c0 (diff)
downloadframeworks_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-xservices/java/com/android/server/wm/WindowManagerService.java10
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!");