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

Commit 2cdd3f2b authored by Christopher Tate's avatar Christopher Tate
Browse files

Don't stomp live wallpapers when tidying up imagery

Tidying up the wallpaper imagery bookkeeping mustn't accidentally
overwrite any user-selected live wallpaper usage.  Only do the full
reset when it's needful *and* we expect to need it.

Bug 27537903

Change-Id: Iaacc750a24ef36ee4e4cc436b62055b51b49b235
parent deee942b
Loading
Loading
Loading
Loading
+21 −7
Original line number Diff line number Diff line
@@ -730,14 +730,28 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
    public void systemRunning() {
        if (DEBUG) Slog.v(TAG, "systemReady");
        WallpaperData wallpaper = mWallpaperMap.get(UserHandle.USER_SYSTEM);
        // If we think we're going to be using the system image wallpaper imagery, make
        // sure we have something to render
        if (mImageWallpaper.equals(wallpaper.nextWallpaperComponent)) {
            // No crop file? Make sure we've finished the processing sequence if necessary
            if (!wallpaper.cropExists()) {
                if (DEBUG) {
                    Slog.i(TAG, "No crop; regenerating from source");
                }
                generateCrop(wallpaper);
            }
            // Still nothing?  Fall back to default.
            if (!wallpaper.cropExists()) {
                if (DEBUG) {
                    Slog.i(TAG, "Unable to regenerate crop; resetting");
                }
                clearWallpaperLocked(false, FLAG_SET_SYSTEM, UserHandle.USER_SYSTEM, null);
            }
        } else {
            if (DEBUG) {
                Slog.i(TAG, "Nondefault wallpaper component; gracefully ignoring");
            }
        }
        switchWallpaper(wallpaper, null);
        wallpaper.wallpaperObserver = new WallpaperObserver(wallpaper);
        wallpaper.wallpaperObserver.startWatching();