diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 5f47986501849..fa18641b3371a 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -3838,8 +3838,9 @@ class WindowState extends WindowContainer implements WindowManagerP fillClientWindowFramesAndConfiguration(mClientWindowFrames, mLastReportedConfiguration, true /* useLatestConfig */, false /* relayoutVisible */); - final boolean reportDraw = drawPending || useBLASTSync() || !mRedrawForSyncReported; - final boolean forceRelayout = reportOrientation || isDragResizeChanged() || !mRedrawForSyncReported; + final boolean syncRedraw = shouldSendRedrawForSync(); + final boolean reportDraw = syncRedraw || drawPending; + final boolean forceRelayout = syncRedraw || reportOrientation || isDragResizeChanged(); final DisplayContent displayContent = getDisplayContent(); final boolean alwaysConsumeSystemBars = displayContent.getDisplayPolicy().areSystemBarsForcedShownLw(this); @@ -5937,10 +5938,14 @@ class WindowState extends WindowContainer implements WindowManagerP * for Windows involved in these Syncs */ private boolean shouldSendRedrawForSync() { + if (mRedrawForSyncReported) { + return false; + } final Task task = getTask(); - if (task != null && task.getMainWindowSizeChangeTransaction() != null) - return !mRedrawForSyncReported; - return useBLASTSync() && !mRedrawForSyncReported; + if (task != null && task.getMainWindowSizeChangeTransaction() != null) { + return true; + } + return useBLASTSync(); } void requestRedrawForSync() {