Merge "Fixed a bug where the current wallpaper could be reset on an update"
This commit is contained in:
@@ -230,7 +230,6 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
|
|||||||
public void onServiceConnected(ComponentName name, IBinder service) {
|
public void onServiceConnected(ComponentName name, IBinder service) {
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
if (mWallpaper.connection == this) {
|
if (mWallpaper.connection == this) {
|
||||||
mWallpaper.lastDiedTime = SystemClock.uptimeMillis();
|
|
||||||
mService = IWallpaperService.Stub.asInterface(service);
|
mService = IWallpaperService.Stub.asInterface(service);
|
||||||
attachServiceLocked(this, mWallpaper);
|
attachServiceLocked(this, mWallpaper);
|
||||||
// XXX should probably do saveSettingsLocked() later
|
// XXX should probably do saveSettingsLocked() later
|
||||||
@@ -250,11 +249,21 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
|
|||||||
if (mWallpaper.connection == this) {
|
if (mWallpaper.connection == this) {
|
||||||
Slog.w(TAG, "Wallpaper service gone: " + mWallpaper.wallpaperComponent);
|
Slog.w(TAG, "Wallpaper service gone: " + mWallpaper.wallpaperComponent);
|
||||||
if (!mWallpaper.wallpaperUpdating
|
if (!mWallpaper.wallpaperUpdating
|
||||||
&& (mWallpaper.lastDiedTime + MIN_WALLPAPER_CRASH_TIME)
|
|
||||||
> SystemClock.uptimeMillis()
|
|
||||||
&& mWallpaper.userId == mCurrentUserId) {
|
&& mWallpaper.userId == mCurrentUserId) {
|
||||||
|
// There is a race condition which causes
|
||||||
|
// {@link #mWallpaper.wallpaperUpdating} to be false even if it is
|
||||||
|
// currently updating since the broadcast notifying us is async.
|
||||||
|
// This race is overcome by the general rule that we only reset the
|
||||||
|
// wallpaper if its service was shut down twice
|
||||||
|
// during {@link #MIN_WALLPAPER_CRASH_TIME} millis.
|
||||||
|
if (mWallpaper.lastDiedTime != 0
|
||||||
|
&& mWallpaper.lastDiedTime + MIN_WALLPAPER_CRASH_TIME
|
||||||
|
> SystemClock.uptimeMillis()) {
|
||||||
Slog.w(TAG, "Reverting to built-in wallpaper!");
|
Slog.w(TAG, "Reverting to built-in wallpaper!");
|
||||||
clearWallpaperLocked(true, mWallpaper.userId, null);
|
clearWallpaperLocked(true, mWallpaper.userId, null);
|
||||||
|
} else {
|
||||||
|
mWallpaper.lastDiedTime = SystemClock.uptimeMillis();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -938,7 +947,6 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
|
|||||||
}
|
}
|
||||||
wallpaper.wallpaperComponent = componentName;
|
wallpaper.wallpaperComponent = componentName;
|
||||||
wallpaper.connection = newConn;
|
wallpaper.connection = newConn;
|
||||||
wallpaper.lastDiedTime = SystemClock.uptimeMillis();
|
|
||||||
newConn.mReply = reply;
|
newConn.mReply = reply;
|
||||||
try {
|
try {
|
||||||
if (wallpaper.userId == mCurrentUserId) {
|
if (wallpaper.userId == mCurrentUserId) {
|
||||||
|
|||||||
Reference in New Issue
Block a user