summaryrefslogtreecommitdiffstats
path: root/services/core/java/com/android/server/wallpaper
diff options
context:
space:
mode:
authorAmith Yamasani <yamasani@google.com>2014-12-10 14:09:05 -0800
committerAmith Yamasani <yamasani@google.com>2014-12-13 00:15:45 +0000
commit52d750c5c24969a6a25f058bf6c724016f319e2b (patch)
treebc445292377cd078f2503f82c71ed6e8d37af1ba /services/core/java/com/android/server/wallpaper
parent6bdbae07cf9b3929dca471072bea7001f7996efb (diff)
downloadframeworks_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.java16
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);