NO PARTIAL RERUN: Do not return recycled bitmaps

There's also no need to offload WallpaperManager#forgetLoadedBitmap
because Bitmap#recycle is asynchronous - and the whole method is
synchronized.

Fixes 77597550
Test: atest cts/tests/framework/base/activitymanager/src/android/server/am/ActivityManagerMultiDisplayTests.java

Change-Id: I88014e21bd05e10c2f524393bb637596708e4e63
This commit is contained in:
Lucas Dupin
2018-04-07 11:08:15 -07:00
parent 4f9d750e91
commit 61df45cd18
2 changed files with 3 additions and 8 deletions

View File

@@ -401,7 +401,8 @@ public class WallpaperManager {
}
}
synchronized (this) {
if (mCachedWallpaper != null && mCachedWallpaperUserId == userId) {
if (mCachedWallpaper != null && mCachedWallpaperUserId == userId
&& !mCachedWallpaper.isRecycled()) {
return mCachedWallpaper;
}
mCachedWallpaper = null;

View File

@@ -444,13 +444,7 @@ public class ImageWallpaper extends WallpaperService {
final Surface surface = getSurfaceHolder().getSurface();
surface.hwuiDestroy();
mLoader = new AsyncTask<Void, Void, Bitmap>() {
@Override
protected Bitmap doInBackground(Void... params) {
mWallpaperManager.forgetLoadedWallpaper();
return null;
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
mWallpaperManager.forgetLoadedWallpaper();
}
private void scheduleUnloadWallpaper() {