Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bc907cf9 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Don't recycle bitmaps we don't own" into oc-dr1-dev

parents d3320766 42acf600
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -136,12 +136,12 @@ public final class WallpaperColors implements Parcelable {
        }

        final int bitmapArea = bitmap.getWidth() * bitmap.getHeight();
        boolean shouldRecycle = false;
        if (bitmapArea > MAX_WALLPAPER_EXTRACTION_AREA) {
            shouldRecycle = true;
            Size optimalSize = calculateOptimalSize(bitmap.getWidth(), bitmap.getHeight());
            Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, optimalSize.getWidth(),
            bitmap = Bitmap.createScaledBitmap(bitmap, optimalSize.getWidth(),
                    optimalSize.getHeight(), true /* filter */);
            bitmap.recycle();
            bitmap = scaledBitmap;
        }

        final Palette palette = Palette
@@ -181,6 +181,11 @@ public final class WallpaperColors implements Parcelable {
        }

        int hints = calculateHints(bitmap);

        if (shouldRecycle) {
            bitmap.recycle();
        }

        return new WallpaperColors(primary, secondary, tertiary, hints);
    }

+12 −0
Original line number Diff line number Diff line
@@ -77,4 +77,16 @@ public class WallpaperColorsTest {
        Assert.assertFalse("Light surface shouldn't support dark text "
                + "when it contains dark pixels", supportsDarkText);
    }

    /**
     * WallpaperColors should not recycle bitmaps that it didn't create.
     */
    @Test
    public void wallpaperRecycleBitmapTest() {
        Bitmap image = Bitmap.createBitmap(300, 300, Bitmap.Config.ARGB_8888);
        WallpaperColors.fromBitmap(image);
        Canvas canvas = new Canvas();
        // This would crash:
        canvas.drawBitmap(image, 0, 0, new Paint());
    }
}