From da058e260d1c5ac8039034b38db8c697c16017bb Mon Sep 17 00:00:00 2001 From: Christopher Tate Date: Wed, 8 Oct 2014 14:51:09 -0700 Subject: [PATCH] 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 --- .../android/server/wallpaper/WallpaperManagerService.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java index a8245e7853469..8a3633544d735 100644 --- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java @@ -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,