Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8e519294 authored by wilsonshih's avatar wilsonshih Committed by android-build-merger
Browse files

Merge "Fix theme cannot change due to there is no wallpaper colors." into pi-dev am: dee98726

am: ff5c8bac

Change-Id: Id789abf9c9f96236385ccbab987393e34de7300c
parents 9b634f17 ff5c8bac
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -469,6 +469,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
     */
    private void extractColors(WallpaperData wallpaper) {
        String cropFile = null;
        boolean defaultImageWallpaper = false;
        int wallpaperId;

        if (wallpaper.equals(mFallbackWallpaper)) {
@@ -482,6 +483,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
                    || wallpaper.wallpaperComponent == null;
            if (imageWallpaper && wallpaper.cropFile != null && wallpaper.cropFile.exists()) {
                cropFile = wallpaper.cropFile.getAbsolutePath();
            } else if (imageWallpaper && !wallpaper.cropExists() && !wallpaper.sourceExists()) {
                defaultImageWallpaper = true;
            }
            wallpaperId = wallpaper.wallpaperId;
        }
@@ -493,6 +496,25 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
                colors = WallpaperColors.fromBitmap(bitmap);
                bitmap.recycle();
            }
        } else if (defaultImageWallpaper) {
            // There is no crop and source file because this is default image wallpaper.
            try (final InputStream is =
                         WallpaperManager.openDefaultWallpaper(mContext, FLAG_SYSTEM)) {
                if (is != null) {
                    try {
                        final BitmapFactory.Options options = new BitmapFactory.Options();
                        final Bitmap bitmap = BitmapFactory.decodeStream(is, null, options);
                        if (bitmap != null) {
                            colors = WallpaperColors.fromBitmap(bitmap);
                            bitmap.recycle();
                        }
                    } catch (OutOfMemoryError e) {
                        Slog.w(TAG, "Can't decode default wallpaper stream", e);
                    }
                }
            } catch (IOException e) {
                Slog.w(TAG, "Can't close default wallpaper stream", e);
            }
        }

        if (colors == null) {