From 91ebd74d39e8a9bd38ec826f91784efd36c62321 Mon Sep 17 00:00:00 2001 From: Peter Kalauskas Date: Wed, 1 Dec 2021 18:43:42 -0800 Subject: [PATCH] Support single-user ImageWallpaper service Bug: 206118673 Test: Manually check image wallpaper works for multi-user Change-Id: Ic56fe799b2c6891f52db7a79348fdac4e0ef208b --- .../android/service/wallpaper/WallpaperService.java | 12 ++++++++++++ packages/SystemUI/AndroidManifest.xml | 1 + .../src/com/android/systemui/ImageWallpaper.java | 1 + .../systemui/glwallpaper/ImageWallpaperRenderer.java | 4 +++- 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java index b862ec15f3d98..83a6bc0ec99da 100644 --- a/core/java/android/service/wallpaper/WallpaperService.java +++ b/core/java/android/service/wallpaper/WallpaperService.java @@ -609,6 +609,18 @@ public abstract class WallpaperService extends Service { } } + /** @hide */ + public void setShowForAllUsers(boolean show) { + mWindowPrivateFlags = show + ? (mWindowPrivateFlags + | WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS) + : (mWindowPrivateFlags + & ~WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS); + if (mCreated) { + updateSurface(false, false, false); + } + } + /** {@hide} */ @UnsupportedAppUsage public void setFixedSizeAllowed(boolean allowed) { diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml index dde0a199f4269..f2eff05a16f1c 100644 --- a/packages/SystemUI/AndroidManifest.xml +++ b/packages/SystemUI/AndroidManifest.xml @@ -375,6 +375,7 @@ diff --git a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java index d1739aaccac28..8ff90f780c99d 100644 --- a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java +++ b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java @@ -126,6 +126,7 @@ public class ImageWallpaper extends WallpaperService { mRenderer = getRendererInstance(); setFixedSizeAllowed(true); updateSurfaceSize(); + setShowForAllUsers(true); mRenderer.setOnBitmapChanged(b -> { mLocalColorsToAdd.addAll(mColorAreas); diff --git a/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageWallpaperRenderer.java b/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageWallpaperRenderer.java index 729730cdf6f1b..7c0b93b7eebc3 100644 --- a/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageWallpaperRenderer.java +++ b/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageWallpaperRenderer.java @@ -25,6 +25,7 @@ import android.app.WallpaperManager; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Rect; +import android.os.UserHandle; import android.util.Log; import android.util.Size; @@ -142,7 +143,8 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer { mRefCount.incrementAndGet(); synchronized (mRefCount) { if (mBitmap == null) { - mBitmap = mWallpaperManager.getBitmap(false /* hardware */); + mBitmap = mWallpaperManager.getBitmapAsUser(UserHandle.USER_CURRENT, + false /* hardware */); mWcgContent = mWallpaperManager.wallpaperSupportsWcg( WallpaperManager.FLAG_SYSTEM); mWallpaperManager.forgetLoadedWallpaper();