diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 3f98ea59a0c06..828185fe6ed99 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -2542,7 +2542,7 @@ public class WindowManagerService extends IWindowManager.Stub if (outSyncIdBundle != null) { final int maybeSyncSeqId; - if (USE_BLAST_SYNC && win.useBLASTSync() && viewVisibility != View.GONE + if (USE_BLAST_SYNC && win.useBLASTSync() && viewVisibility == View.VISIBLE && win.mSyncSeqId > lastSyncSeqId) { maybeSyncSeqId = win.shouldSyncWithBuffers() ? win.mSyncSeqId : -1; win.markRedrawForSyncReported(); diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 2e7e78db9e057..72d47c6bd7672 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -5953,10 +5953,10 @@ class WindowState extends WindowContainer implements WindowManagerP @Override boolean isSyncFinished() { - if (mSyncState == SYNC_STATE_WAITING_FOR_DRAW && mViewVisibility == View.GONE + if (mSyncState == SYNC_STATE_WAITING_FOR_DRAW && mViewVisibility != View.VISIBLE && !isVisibleRequested()) { - // Don't wait for GONE windows. However, we don't alter the state in case the window - // becomes un-gone while the syncset is still active. + // Don't wait for invisible windows. However, we don't alter the state in case the + // window becomes visible while the sync group is still active. return true; } return super.isSyncFinished();