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

Commit 6474c4cd authored by Amith Yamasani's avatar Amith Yamasani
Browse files

Fix dupes in initial wallpaper selection

Bug: 7281217

Needed to load the settings for the user, in case the user was stopped.

Change-Id: I52d1f59a7681f8c4f7d3596486accb91cb840ecf
parent 33c36895
Loading
Loading
Loading
Loading
+20 −3
Original line number Original line Diff line number Diff line
@@ -38,6 +38,7 @@ import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
import android.content.pm.ServiceInfo;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.UserInfo;
import android.content.res.Resources;
import android.content.res.Resources;
import android.os.Binder;
import android.os.Binder;
import android.os.Bundle;
import android.os.Bundle;
@@ -53,6 +54,7 @@ import android.os.SELinux;
import android.os.ServiceManager;
import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.SystemClock;
import android.os.UserHandle;
import android.os.UserHandle;
import android.os.UserManager;
import android.service.wallpaper.IWallpaperConnection;
import android.service.wallpaper.IWallpaperConnection;
import android.service.wallpaper.IWallpaperEngine;
import android.service.wallpaper.IWallpaperEngine;
import android.service.wallpaper.IWallpaperService;
import android.service.wallpaper.IWallpaperService;
@@ -511,6 +513,9 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
                wallpaper = new WallpaperData(userId);
                wallpaper = new WallpaperData(userId);
                mWallpaperMap.put(userId, wallpaper);
                mWallpaperMap.put(userId, wallpaper);
                loadSettingsLocked(userId);
                loadSettingsLocked(userId);
            }
            // Not started watching yet, in case wallpaper data was loaded for other reasons.
            if (wallpaper.wallpaperObserver == null) {
                wallpaper.wallpaperObserver = new WallpaperObserver(wallpaper);
                wallpaper.wallpaperObserver = new WallpaperObserver(wallpaper);
                wallpaper.wallpaperObserver.startWatching();
                wallpaper.wallpaperObserver.startWatching();
            }
            }
@@ -580,9 +585,21 @@ class WallpaperManagerService extends IWallpaperManager.Stub {


    public boolean hasNamedWallpaper(String name) {
    public boolean hasNamedWallpaper(String name) {
        synchronized (mLock) {
        synchronized (mLock) {
            for (int i=0; i<mWallpaperMap.size(); i++) {
            List<UserInfo> users;
                WallpaperData wd = mWallpaperMap.valueAt(i);
            long ident = Binder.clearCallingIdentity();
                if (name.equals(wd.name)) {
            try {
                users = ((UserManager) mContext.getSystemService(Context.USER_SERVICE)).getUsers();
            } finally {
                Binder.restoreCallingIdentity(ident);
            }
            for (UserInfo user: users) {
                WallpaperData wd = mWallpaperMap.get(user.id);
                if (wd == null) {
                    // User hasn't started yet, so load her settings to peek at the wallpaper
                    loadSettingsLocked(user.id);
                    wd = mWallpaperMap.get(user.id);
                }
                if (wd != null && name.equals(wd.name)) {
                    return true;
                    return true;
                }
                }
            }
            }