diff options
author | Amith Yamasani <yamasani@google.com> | 2014-12-10 14:09:05 -0800 |
---|---|---|
committer | Amith Yamasani <yamasani@google.com> | 2014-12-13 00:15:45 +0000 |
commit | 52d750c5c24969a6a25f058bf6c724016f319e2b (patch) | |
tree | bc445292377cd078f2503f82c71ed6e8d37af1ba /services/core/java/com/android/server/wallpaper | |
parent | 6bdbae07cf9b3929dca471072bea7001f7996efb (diff) | |
download | frameworks_base-52d750c5c24969a6a25f058bf6c724016f319e2b.zip frameworks_base-52d750c5c24969a6a25f058bf6c724016f319e2b.tar.gz frameworks_base-52d750c5c24969a6a25f058bf6c724016f319e2b.tar.bz2 |
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
Diffstat (limited to 'services/core/java/com/android/server/wallpaper')
-rw-r--r-- | services/core/java/com/android/server/wallpaper/WallpaperManagerService.java | 16 |
1 files 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 257cbd0..bd2e923 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); |