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

Commit 4e525a6e authored by Romain Guy's avatar Romain Guy
Browse files

Tentative fix for mysteriously recycled bitmap

This code should not be triggered with scale == 1.0f because of the
density comparisons above though.

Change-Id: I9e39e3769a3b6550c97df3b213457947ec1f554b
parent e1a409ba
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -519,14 +519,15 @@ public class BitmapFactory {
        final boolean isNinePatch = np != null && NinePatch.isNinePatchChunk(np);
        if (opts.inScaled || isNinePatch) {
            float scale = targetDensity / (float) density;
            // TODO: This is very inefficient and should be done in native by Skia
            if (scale != 1.0f) {
                final Bitmap oldBitmap = bm;
                bm = Bitmap.createScaledBitmap(oldBitmap, (int) (bm.getWidth() * scale + 0.5f),
                        (int) (bm.getHeight() * scale + 0.5f), true);
            oldBitmap.recycle();
                if (bm != oldBitmap) oldBitmap.recycle();
            }

            if (isNinePatch) {
                np = nativeScaleNinePatch(np, scale, outPadding);
                if (scale != 1.0f) np = nativeScaleNinePatch(np, scale, outPadding);
                bm.setNinePatchChunk(np);
            }
            bm.setDensity(targetDensity);