From dcdca58cd5eb60a32de583eda5a334eb17f38034 Mon Sep 17 00:00:00 2001 From: Robert Carr Date: Thu, 7 Apr 2016 22:59:24 -0700 Subject: [PATCH] Prevent premature window replacement. maybeRemoveReplacedWindows is called when any window has reported drawing, we have to verify that we have actually ourselves drawn, before commencing the replacement. Bug: 26668339 Change-Id: Iabfc2e813989381f9f20f3bb111100911405686b --- services/core/java/com/android/server/wm/WindowState.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 43cc8c75734b2..331536f016879 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -1573,7 +1573,7 @@ final class WindowState implements WindowManagerPolicy.WindowState { } for (int i = mAppToken.allAppWindows.size() - 1; i >= 0; i--) { final WindowState win = mAppToken.allAppWindows.get(i); - if (win.mWillReplaceWindow && win.mReplacingWindow == this) { + if (win.mWillReplaceWindow && win.mReplacingWindow == this && hasDrawnLw()) { if (DEBUG_ADD_REMOVE) Slog.d(TAG, "Removing replaced window: " + win); win.mWillReplaceWindow = false; win.mAnimateReplacingWindow = false;