From 52d750c5c24969a6a25f058bf6c724016f319e2b Mon Sep 17 00:00:00 2001 From: Amith Yamasani Date: Wed, 10 Dec 2014 14:09:05 -0800 Subject: [PATCH] Check which file changed before requesting backup Make sure that the changed file is one of the wallpaper files before requesting backup or informing listeners. Bug: 18694053 Change-Id: Iaa8fe9d3c97634b3cc6a9ccd67c36cf394d17ca0 --- .../server/wallpaper/WallpaperManagerService.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java index 257cbd0df1c1..bd2e92334859 100644 --- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java @@ -116,6 +116,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { final WallpaperData mWallpaper; final File mWallpaperDir; final File mWallpaperFile; + final File mWallpaperInfoFile; public WallpaperObserver(WallpaperData wallpaper) { super(getWallpaperDir(wallpaper.userId).getAbsolutePath(), @@ -123,6 +124,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { mWallpaperDir = getWallpaperDir(wallpaper.userId); mWallpaper = wallpaper; mWallpaperFile = new File(mWallpaperDir, WALLPAPER); + mWallpaperInfoFile = new File(mWallpaperDir, WALLPAPER_INFO); } @Override @@ -131,13 +133,15 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { return; } synchronized (mLock) { - // changing the wallpaper means we'll need to back up the new one - long origId = Binder.clearCallingIdentity(); - BackupManager bm = new BackupManager(mContext); - bm.dataChanged(); - Binder.restoreCallingIdentity(origId); - File changedFile = new File(mWallpaperDir, path); + if (mWallpaperFile.equals(changedFile) + || mWallpaperInfoFile.equals(changedFile)) { + // changing the wallpaper means we'll need to back up the new one + long origId = Binder.clearCallingIdentity(); + BackupManager bm = new BackupManager(mContext); + bm.dataChanged(); + Binder.restoreCallingIdentity(origId); + } if (mWallpaperFile.equals(changedFile)) { notifyCallbacksLocked(mWallpaper); final boolean written = (event == CLOSE_WRITE || event == MOVED_TO); -- 2.11.0