Also monitor MOVED_TO events for wallpaper updates

Restore uses moveTo(), not open/write/close, so we need
to watch for that as well.  Now the wallpaper service sees
and regenerates the wallpaper image immediately upon restore.

Bug 17909454

Change-Id: I0db224c3d507bdc40399d49bb4bea01899f76ad1
This commit is contained in:
Christopher Tate
2014-10-08 14:51:09 -07:00
parent 6dea8de709
commit da058e260d

View File

@@ -116,7 +116,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
public WallpaperObserver(WallpaperData wallpaper) {
super(getWallpaperDir(wallpaper.userId).getAbsolutePath(),
CLOSE_WRITE | DELETE | DELETE_SELF);
CLOSE_WRITE | MOVED_TO | DELETE | DELETE_SELF);
mWallpaperDir = getWallpaperDir(wallpaper.userId);
mWallpaper = wallpaper;
mWallpaperFile = new File(mWallpaperDir, WALLPAPER);
@@ -137,9 +137,11 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
File changedFile = new File(mWallpaperDir, path);
if (mWallpaperFile.equals(changedFile)) {
notifyCallbacksLocked(mWallpaper);
if (mWallpaper.wallpaperComponent == null || event != CLOSE_WRITE
final boolean written = (event == CLOSE_WRITE || event == MOVED_TO);
if (mWallpaper.wallpaperComponent == null
|| event != CLOSE_WRITE // includes the MOVED_TO case
|| mWallpaper.imageWallpaperPending) {
if (event == CLOSE_WRITE) {
if (written) {
mWallpaper.imageWallpaperPending = false;
}
bindWallpaperComponentLocked(mImageWallpaper, true,