diff options
| author | 2023-09-26 15:17:56 +0000 | |
|---|---|---|
| committer | 2023-10-18 11:08:21 +0000 | |
| commit | 22629d45020be9f67fd7e65d7afa563250c14099 (patch) | |
| tree | 9bf41979d604194dd43504d4dc91a66a3850361a | |
| parent | bf4caf3ba1aea0b6fc01ffd02bad58a71d4aff7f (diff) | |
Make the wallpaper offset update asynchronous
This change tests the effects of making updateWallpaperOffset asynchronous
Bug: 293248754
Test: WallpaperControllerTests
Change-Id: I5a72a1e9a38a7aa9d636c1f2b3b229b13d046151
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 */ } |