diff options
3 files changed, 26 insertions, 4 deletions
diff --git a/core/java/android/window/flags/windowing_frontend.aconfig b/core/java/android/window/flags/windowing_frontend.aconfig index b71468247e37..985dc102b31b 100644 --- a/core/java/android/window/flags/windowing_frontend.aconfig +++ b/core/java/android/window/flags/windowing_frontend.aconfig @@ -192,4 +192,15 @@ flag { metadata { purpose: PURPOSE_BUGFIX } -}
\ No newline at end of file +} + +flag { + name: "ensure_wallpaper_in_transitions" + namespace: "windowing_frontend" + description: "Ensure that wallpaper window tokens are always present/available for collection in transitions" + bug: "347593088" + metadata { + purpose: PURPOSE_BUGFIX + } +} + diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java index a029f38de128..25721280d97e 100644 --- a/services/core/java/com/android/server/wm/Transition.java +++ b/services/core/java/com/android/server/wm/Transition.java @@ -2545,7 +2545,8 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener { final ChangeInfo changeInfo = changes.get(wc); // Reject no-ops, unless wallpaper - if (!changeInfo.hasChanged() && wc.asWallpaperToken() == null) { + if (!changeInfo.hasChanged() + && (!Flags.ensureWallpaperInTransitions() || wc.asWallpaperToken() == null)) { ProtoLog.v(ProtoLogGroup.WM_DEBUG_WINDOW_TRANSITIONS, " Rejecting as no-op: %s", wc); continue; diff --git a/services/core/java/com/android/server/wm/WallpaperController.java b/services/core/java/com/android/server/wm/WallpaperController.java index a3e03029c095..86440ac3782d 100644 --- a/services/core/java/com/android/server/wm/WallpaperController.java +++ b/services/core/java/com/android/server/wm/WallpaperController.java @@ -60,6 +60,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.protolog.common.ProtoLog; import com.android.internal.util.ToBooleanFunction; import com.android.server.wallpaper.WallpaperCropper.WallpaperCropUtils; +import com.android.window.flags.Flags; import java.io.PrintWriter; import java.util.ArrayList; @@ -764,10 +765,19 @@ class WallpaperController { void collectTopWallpapers(Transition transition) { if (mFindResults.hasTopShowWhenLockedWallpaper()) { - transition.collect(mFindResults.mTopWallpaper.mTopShowWhenLockedWallpaper.mToken); + if (Flags.ensureWallpaperInTransitions()) { + transition.collect(mFindResults.mTopWallpaper.mTopShowWhenLockedWallpaper.mToken); + } else { + transition.collect(mFindResults.mTopWallpaper.mTopShowWhenLockedWallpaper); + } + } if (mFindResults.hasTopHideWhenLockedWallpaper()) { - transition.collect(mFindResults.mTopWallpaper.mTopHideWhenLockedWallpaper.mToken); + if (Flags.ensureWallpaperInTransitions()) { + transition.collect(mFindResults.mTopWallpaper.mTopHideWhenLockedWallpaper.mToken); + } else { + transition.collect(mFindResults.mTopWallpaper.mTopHideWhenLockedWallpaper); + } } } |