From 61df45cd185fb2711ec2d5310679756ead6b7ad7 Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Sat, 7 Apr 2018 11:08:15 -0700 Subject: [PATCH] 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 --- core/java/android/app/WallpaperManager.java | 3 ++- .../SystemUI/src/com/android/systemui/ImageWallpaper.java | 8 +------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/core/java/android/app/WallpaperManager.java b/core/java/android/app/WallpaperManager.java index 465340f6e5eb0..17bc6eab8012f 100644 --- a/core/java/android/app/WallpaperManager.java +++ b/core/java/android/app/WallpaperManager.java @@ -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; diff --git a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java index a4f8d8c1bcd2b..b8a57bfe885a0 100644 --- a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java +++ b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java @@ -444,13 +444,7 @@ public class ImageWallpaper extends WallpaperService { final Surface surface = getSurfaceHolder().getSurface(); surface.hwuiDestroy(); - mLoader = new AsyncTask() { - @Override - protected Bitmap doInBackground(Void... params) { - mWallpaperManager.forgetLoadedWallpaper(); - return null; - } - }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + mWallpaperManager.forgetLoadedWallpaper(); } private void scheduleUnloadWallpaper() {