Workaround wallpaper restore race

If WallpaperManager is asked to read a wallpaper between when we
call mWm.clear and mWm.setStream, it is possible for us to end
up losing restored state such as cropHint and allowBackup

By not calling mWm.clear, we make this much less likely to happen.
It isn't necessary to call clear, as will explicitly overwrite
all the interesting state anyway.

Test: by repeated adb restore
Bug: 34760753
Change-Id: I2750695d5dd16077b47b5b8fca3a667b98cc4f6c
This commit is contained in:
Bryan Mawhinney
2017-02-07 15:18:07 +00:00
parent 6c149326d8
commit 5c14853296

View File

@@ -217,9 +217,6 @@ public class WallpaperBackupAgent extends BackupAgent {
final int sysWhich = FLAG_SYSTEM | (lockImageStage.exists() ? 0 : FLAG_LOCK);
try {
// First off, revert to the factory state
mWm.clear(FLAG_SYSTEM | FLAG_LOCK);
// It is valid for the imagery to be absent; it means that we were not permitted
// to back up the original image on the source device, or there was no user-supplied
// wallpaper image present.