From b1574e7aa99c574ac7f98ba76351c9ee38565b73 Mon Sep 17 00:00:00 2001 From: "[1;3C" Date: Thu, 10 Sep 2020 15:55:06 -0700 Subject: [PATCH] Don't wait for windows which are goneForLayout Gone for layout means that relayout won't be requested from that window. This means that the sync engine would end up waiting forever since there won't be a draw if there's no layout. Bug: 161980187 Test: everything works like normal, but later CLs don't get hung up here. Change-Id: I96d5a68012a71ec27ede1168d03f5240244823aa --- services/core/java/com/android/server/wm/WindowState.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 84a9c750d2d36..6dcd903253547 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -5872,6 +5872,10 @@ class WindowState extends WindowContainer implements WindowManagerP @Override boolean prepareForSync(BLASTSyncEngine.TransactionReadyListener waitingListener, int waitingId) { + // If the window is goneForLayout, relayout won't be called so we'd just wait forever. + if (isGoneForLayout()) { + return false; + } boolean willSync = setPendingListener(waitingListener, waitingId); if (!willSync) { return false;