diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java index 206b80c9c8ec9..da7fbf8aec7c1 100644 --- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java @@ -2940,6 +2940,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub checkPermission(android.Manifest.permission.SET_WALLPAPER_DIM_AMOUNT); final long ident = Binder.clearCallingIdentity(); try { + List pendingColorExtraction = new ArrayList<>(); synchronized (mLock) { WallpaperData wallpaper = mWallpaperMap.get(mCurrentUserId); WallpaperData lockWallpaper = mLockWallpaperMap.get(mCurrentUserId); @@ -2975,7 +2976,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub // Need to extract colors again to re-calculate dark hints after // applying dimming. wp.mIsColorExtractedFromDim = true; - notifyWallpaperColorsChanged(wp, wp.mWhich); + pendingColorExtraction.add(wp); changed = true; } } @@ -3007,6 +3008,9 @@ public class WallpaperManagerService extends IWallpaperManager.Stub } } } + for (WallpaperData wp: pendingColorExtraction) { + notifyWallpaperColorsChanged(wp, wp.mWhich); + } } finally { Binder.restoreCallingIdentity(ident); }