summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJorim Jaggi <jjaggi@google.com>2019-07-16 17:43:15 +0200
committerandroid-build-team Robot <android-build-team-robot@google.com>2019-07-26 02:16:11 +0000
commit185fc7dfa4949217705060a62b6f6efaa51bc688 (patch)
tree6e647f373a2d51831593395e7fb6ee0b79a1dfa1
parent864a428609d5fdd7a6e09f2644b2a2167292cfc6 (diff)
downloadbase-185fc7dfa4949217705060a62b6f6efaa51bc688.tar.gz
Only consider gone for layout if parent is gone for layout
If we check getParentWindowHidden, that determines mostly actual visibility. However, we don't want that because we still would like to follow the parent's window layout lifecycle, as otherwise we may be stuck in a transition in case the parent window is hidden but the child is waiting for a layout to happen. Test: Click "Customize" on wallpaper picker, go back, ensure no transition timeout Fixes: 135976008 Change-Id: I66aeab29a81cd82b170aaf337249616b1f559848 (cherry picked from commit b52b0457e1bad14697341cb81f6d391755b009be) (cherry picked from commit 07f7d1947af6ceecb19fccf9ae44e88bae6b3f57)
-rw-r--r--services/core/java/com/android/server/wm/WindowState.java7
1 files changed, 6 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index 43ad091b08c0..703fe4ac867b 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -1623,7 +1623,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
|| !mRelayoutCalled
|| (atoken == null && mToken.isHidden())
|| (atoken != null && atoken.hiddenRequested)
- || isParentWindowHidden()
+ || isParentWindowGoneForLayout()
|| (mAnimatingExit && !isAnimatingLw())
|| mDestroying;
}
@@ -3795,6 +3795,11 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
return parent != null && parent.mHidden;
}
+ private boolean isParentWindowGoneForLayout() {
+ final WindowState parent = getParentWindow();
+ return parent != null && parent.isGoneForLayoutLw();
+ }
+
void setWillReplaceWindow(boolean animate) {
for (int i = mChildren.size() - 1; i >= 0; i--) {
final WindowState c = mChildren.get(i);