Merge "Fix race condition while WallpaperMS rebinding service." into qt-qpr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
98b1ddfaaa
@@ -3159,8 +3159,11 @@ public final class ActiveServices {
|
||||
}
|
||||
}
|
||||
|
||||
// If unbound while waiting to start, remove the pending service
|
||||
mPendingServices.remove(s);
|
||||
// If unbound while waiting to start and there is no connection left in this service,
|
||||
// remove the pending service
|
||||
if (s.getConnections().isEmpty()) {
|
||||
mPendingServices.remove(s);
|
||||
}
|
||||
|
||||
if ((c.flags&Context.BIND_AUTO_CREATE) != 0) {
|
||||
boolean hasAutoCreate = s.hasAutoCreateConnections();
|
||||
|
||||
@@ -1180,6 +1180,10 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
|
||||
}
|
||||
};
|
||||
|
||||
private Runnable mTryToRebindRunnable = () -> {
|
||||
tryToRebind();
|
||||
};
|
||||
|
||||
WallpaperConnection(WallpaperInfo info, WallpaperData wallpaper, int clientUid) {
|
||||
mInfo = info;
|
||||
mWallpaper = wallpaper;
|
||||
@@ -1286,7 +1290,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
|
||||
saveSettingsLocked(mWallpaper.userId);
|
||||
}
|
||||
FgThread.getHandler().removeCallbacks(mResetRunnable);
|
||||
mContext.getMainThreadHandler().removeCallbacks(this::tryToRebind);
|
||||
mContext.getMainThreadHandler().removeCallbacks(mTryToRebindRunnable);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1344,7 +1348,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
|
||||
< WALLPAPER_RECONNECT_TIMEOUT_MS) {
|
||||
// Bind fail without timeout, schedule rebind
|
||||
Slog.w(TAG, "Rebind fail! Try again later");
|
||||
mContext.getMainThreadHandler().postDelayed(this::tryToRebind, 1000);
|
||||
mContext.getMainThreadHandler().postDelayed(mTryToRebindRunnable, 1000);
|
||||
} else {
|
||||
// Timeout
|
||||
Slog.w(TAG, "Reverting to built-in wallpaper!");
|
||||
|
||||
Reference in New Issue
Block a user