Loading packages/SystemUI/src/com/android/systemui/wallpapers/ImageWallpaper.java +1 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,7 @@ public class ImageWallpaper extends WallpaperService { setShowForAllUsers(true); mWallpaperLocalColorExtractor = new WallpaperLocalColorExtractor( mLongExecutor, mLock, new WallpaperLocalColorExtractor.WallpaperLocalColorExtractorCallback() { @Override public void onColorsProcessed(List<RectF> regions, Loading packages/SystemUI/src/com/android/systemui/wallpapers/WallpaperLocalColorExtractor.java +10 −1 Original line number Diff line number Diff line Loading @@ -61,7 +61,7 @@ public class WallpaperLocalColorExtractor { private int mBitmapWidth = -1; private int mBitmapHeight = -1; private final Object mLock = new Object(); private final Object mLock; private final List<RectF> mPendingRegions = new ArrayList<>(); private final Set<RectF> mProcessedRegions = new ArraySet<>(); Loading Loading @@ -102,12 +102,15 @@ public class WallpaperLocalColorExtractor { /** * Creates a new color extractor. * @param longExecutor the executor on which the color extraction will be performed * @param lock the lock object to use for computing colors or processing the bitmap * @param wallpaperLocalColorExtractorCallback an interface to handle the callbacks from * the color extractor. */ public WallpaperLocalColorExtractor(@LongRunning Executor longExecutor, Object lock, WallpaperLocalColorExtractorCallback wallpaperLocalColorExtractorCallback) { mLongExecutor = longExecutor; mLock = lock; mWallpaperLocalColorExtractorCallback = wallpaperLocalColorExtractorCallback; } Loading Loading @@ -149,6 +152,12 @@ public class WallpaperLocalColorExtractor { private void onBitmapChangedSynchronized(@NonNull Bitmap bitmap) { synchronized (mLock) { if (bitmap.isRecycled()) { // ImageWallpaper loaded a new bitmap before the extraction of the previous one // In that case, ImageWallpaper also scheduled the extraction of the next bitmap Log.i(TAG, "Wallpaper has changed; deferring color extraction"); return; } if (bitmap.getWidth() <= 0 || bitmap.getHeight() <= 0) { Log.e(TAG, "Attempt to extract colors from an invalid bitmap"); return; Loading packages/SystemUI/tests/src/com/android/systemui/wallpapers/WallpaperLocalColorExtractorTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -109,6 +109,7 @@ public class WallpaperLocalColorExtractorTest extends SysuiTestCase { WallpaperLocalColorExtractor colorExtractor = new WallpaperLocalColorExtractor( mBackgroundExecutor, new Object(), new WallpaperLocalColorExtractor.WallpaperLocalColorExtractorCallback() { @Override public void onColorsProcessed(List<RectF> regions, Loading Loading
packages/SystemUI/src/com/android/systemui/wallpapers/ImageWallpaper.java +1 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,7 @@ public class ImageWallpaper extends WallpaperService { setShowForAllUsers(true); mWallpaperLocalColorExtractor = new WallpaperLocalColorExtractor( mLongExecutor, mLock, new WallpaperLocalColorExtractor.WallpaperLocalColorExtractorCallback() { @Override public void onColorsProcessed(List<RectF> regions, Loading
packages/SystemUI/src/com/android/systemui/wallpapers/WallpaperLocalColorExtractor.java +10 −1 Original line number Diff line number Diff line Loading @@ -61,7 +61,7 @@ public class WallpaperLocalColorExtractor { private int mBitmapWidth = -1; private int mBitmapHeight = -1; private final Object mLock = new Object(); private final Object mLock; private final List<RectF> mPendingRegions = new ArrayList<>(); private final Set<RectF> mProcessedRegions = new ArraySet<>(); Loading Loading @@ -102,12 +102,15 @@ public class WallpaperLocalColorExtractor { /** * Creates a new color extractor. * @param longExecutor the executor on which the color extraction will be performed * @param lock the lock object to use for computing colors or processing the bitmap * @param wallpaperLocalColorExtractorCallback an interface to handle the callbacks from * the color extractor. */ public WallpaperLocalColorExtractor(@LongRunning Executor longExecutor, Object lock, WallpaperLocalColorExtractorCallback wallpaperLocalColorExtractorCallback) { mLongExecutor = longExecutor; mLock = lock; mWallpaperLocalColorExtractorCallback = wallpaperLocalColorExtractorCallback; } Loading Loading @@ -149,6 +152,12 @@ public class WallpaperLocalColorExtractor { private void onBitmapChangedSynchronized(@NonNull Bitmap bitmap) { synchronized (mLock) { if (bitmap.isRecycled()) { // ImageWallpaper loaded a new bitmap before the extraction of the previous one // In that case, ImageWallpaper also scheduled the extraction of the next bitmap Log.i(TAG, "Wallpaper has changed; deferring color extraction"); return; } if (bitmap.getWidth() <= 0 || bitmap.getHeight() <= 0) { Log.e(TAG, "Attempt to extract colors from an invalid bitmap"); return; Loading
packages/SystemUI/tests/src/com/android/systemui/wallpapers/WallpaperLocalColorExtractorTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -109,6 +109,7 @@ public class WallpaperLocalColorExtractorTest extends SysuiTestCase { WallpaperLocalColorExtractor colorExtractor = new WallpaperLocalColorExtractor( mBackgroundExecutor, new Object(), new WallpaperLocalColorExtractor.WallpaperLocalColorExtractorCallback() { @Override public void onColorsProcessed(List<RectF> regions, Loading