diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 1f73a784932e6..2dc163c96bfb1 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -6080,7 +6080,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 d5acf4fed330b..56afc07909480 100644 --- a/services/core/java/com/android/server/wm/Transition.java +++ b/services/core/java/com/android/server/wm/Transition.java @@ -299,7 +299,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);