diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 7ed57dbea8ba2..dfbba0dcb7e61 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -6086,7 +6086,8 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp rootTask.ensureActivitiesVisible(starting, configChanges, preserveWindows, notifyClients); }); - if (mTransitionController.isCollecting() + if (mTransitionController.useShellTransitionsRotation() + && mTransitionController.isCollecting() && mWallpaperController.getWallpaperTarget() != null) { // Also update wallpapers so that their requestedVisibility immediately reflects // the changes to activity visibility. diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java index 3fcaa5c21ccca..3af372076b78f 100644 --- a/services/core/java/com/android/server/wm/Transition.java +++ b/services/core/java/com/android/server/wm/Transition.java @@ -300,7 +300,12 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe } } if (mParticipants.contains(wc)) return; - mSyncEngine.addToSyncSet(mSyncId, wc); + // Wallpaper is like in a static drawn state unless display may have changes, so exclude + // the case to reduce transition latency waiting for the unchanged wallpaper to redraw. + final boolean needSyncDraw = !isWallpaper(wc) || mParticipants.contains(wc.mDisplayContent); + if (needSyncDraw) { + mSyncEngine.addToSyncSet(mSyncId, wc); + } ChangeInfo info = mChanges.get(wc); if (info == null) { info = new ChangeInfo(wc);