From c59eff487b0d28f0b8402ffcb3fce1defe58f6ce Mon Sep 17 00:00:00 2001 From: Vishnu Nair Date: Mon, 28 Jun 2021 15:57:01 -0700 Subject: [PATCH] Specify the wallpaper blast wrapper is a wallpaper window SurfaceFlinger scheduler keys off the window type to implement some refresh rate selection logic. If a layer has window type wallpaper, then the refresh rate vote is set to min. With Blast, the actual buffer will arrive in a layer without the window type metadata. Fix this by setting the metadata on the blast bbq layer as well. Test: check if wallpaper runs at a lower refresh rate Fixes: 191222072 Change-Id: I50058cf42fca155630354ea247d12511ebfe37a8 --- core/java/android/service/wallpaper/WallpaperService.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java index 05ed75a7d8fb1..8d176d8223d0e 100644 --- a/core/java/android/service/wallpaper/WallpaperService.java +++ b/core/java/android/service/wallpaper/WallpaperService.java @@ -20,6 +20,7 @@ import static android.graphics.Matrix.MSCALE_X; import static android.graphics.Matrix.MSCALE_Y; import static android.graphics.Matrix.MSKEW_X; import static android.graphics.Matrix.MSKEW_Y; +import static android.view.SurfaceControl.METADATA_WINDOW_TYPE; import static android.view.View.SYSTEM_UI_FLAG_VISIBLE; import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER; @@ -1024,6 +1025,8 @@ public abstract class WallpaperService extends Service { mBbqSurfaceControl = new SurfaceControl.Builder() .setName("Wallpaper BBQ wrapper") .setHidden(false) + // TODO(b/192291754) + .setMetadata(METADATA_WINDOW_TYPE, TYPE_WALLPAPER) .setBLASTLayer() .setParent(mSurfaceControl) .setCallsite("Wallpaper#relayout")