diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 42cd8c11fec28..6032f874dd75c 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -2553,6 +2553,12 @@ public class WindowManagerService extends IWindowManager.Stub && win.mSyncSeqId > lastSyncSeqId) { maybeSyncSeqId = win.shouldSyncWithBuffers() ? win.mSyncSeqId : -1; win.markRedrawForSyncReported(); + if (win.mSyncState == WindowContainer.SYNC_STATE_WAITING_FOR_DRAW + && winAnimator.mDrawState == WindowStateAnimator.HAS_DRAWN + && maybeSyncSeqId < 0) { + // Do not wait for a drawn window which won't report draw. + win.onSyncFinishedDrawing(); + } } else { maybeSyncSeqId = -1; }