diff options
4 files changed, 15 insertions, 3 deletions
diff --git a/core/java/android/window/flags/windowing_frontend.aconfig b/core/java/android/window/flags/windowing_frontend.aconfig index 6c025a47ff5a..73778900399c 100644 --- a/core/java/android/window/flags/windowing_frontend.aconfig +++ b/core/java/android/window/flags/windowing_frontend.aconfig @@ -28,3 +28,12 @@ flag { description: "Enable accurate transition readiness tracking" bug: "294925498" } + + +flag { + name: "wallpaper_offset_async" + namespace: "windowing_frontend" + description: "Do not synchronise the wallpaper offset" + bug: "293248754" + is_fixed_read_only: true +}
\ No newline at end of file diff --git a/services/core/java/com/android/server/wm/WallpaperController.java b/services/core/java/com/android/server/wm/WallpaperController.java index 674ff487800f..94e66ffd8373 100644 --- a/services/core/java/com/android/server/wm/WallpaperController.java +++ b/services/core/java/com/android/server/wm/WallpaperController.java @@ -536,7 +536,7 @@ class WallpaperController { window.mWallpaperY = y; window.mWallpaperXStep = xStep; window.mWallpaperYStep = yStep; - updateWallpaperOffsetLocked(window, true); + updateWallpaperOffsetLocked(window, !mService.mFlags.mWallpaperOffsetAsync); } } @@ -561,7 +561,7 @@ class WallpaperController { if (window.mWallpaperDisplayOffsetX != x || window.mWallpaperDisplayOffsetY != y) { window.mWallpaperDisplayOffsetX = x; window.mWallpaperDisplayOffsetY = y; - updateWallpaperOffsetLocked(window, true); + updateWallpaperOffsetLocked(window, !mService.mFlags.mWallpaperOffsetAsync); } } diff --git a/services/core/java/com/android/server/wm/WallpaperWindowToken.java b/services/core/java/com/android/server/wm/WallpaperWindowToken.java index 50ef52a4d9dd..1ed14310a500 100644 --- a/services/core/java/com/android/server/wm/WallpaperWindowToken.java +++ b/services/core/java/com/android/server/wm/WallpaperWindowToken.java @@ -117,7 +117,8 @@ class WallpaperWindowToken extends WindowToken { final WallpaperController wallpaperController = mDisplayContent.mWallpaperController; for (int wallpaperNdx = mChildren.size() - 1; wallpaperNdx >= 0; wallpaperNdx--) { final WindowState wallpaper = mChildren.get(wallpaperNdx); - if (wallpaperController.updateWallpaperOffset(wallpaper, sync)) { + if (wallpaperController.updateWallpaperOffset(wallpaper, + sync && !mWmService.mFlags.mWallpaperOffsetAsync)) { // We only want to be synchronous with one wallpaper. sync = false; } diff --git a/services/core/java/com/android/server/wm/WindowManagerFlags.java b/services/core/java/com/android/server/wm/WindowManagerFlags.java index 5b9acb2f67c4..46677107c670 100644 --- a/services/core/java/com/android/server/wm/WindowManagerFlags.java +++ b/services/core/java/com/android/server/wm/WindowManagerFlags.java @@ -47,5 +47,7 @@ class WindowManagerFlags { final boolean mWindowStateResizeItemFlag = Flags.windowStateResizeItemFlag(); + final boolean mWallpaperOffsetAsync = Flags.wallpaperOffsetAsync(); + /* End Available Flags */ } |