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

Commit 6375e48d authored by Mohammed Althaf T's avatar Mohammed Althaf T 😊
Browse files

Merge branch '4170-a16-bitmap_crash' into 'v3.6-a16'

Fix blur drawable recycled bitmap crash

See merge request e/os/BlissLauncher3!160
parents 0b95af09 e1a5f825
Loading
Loading
Loading
Loading
Loading
+18 −7
Original line number Diff line number Diff line
@@ -37,10 +37,17 @@ internal constructor(
    private val blurPaint = Paint(Paint.FILTER_BITMAP_FLAG or Paint.ANTI_ALIAS_FLAG)
    private var blurBitmap: Bitmap? = null
        set(value) {
            if (field != value) {
                field = value
            val safeBitmap = value?.takeUnless { it.isRecycled }
            if (field == safeBitmap) return

            field = safeBitmap
            blurPaint.shader =
                    value?.let { BitmapShader(it, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP) }
                safeBitmap?.let {
                    try {
                        BitmapShader(it, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP)
                    } catch (_: IllegalStateException) {
                        null
                    }
                }
        }

@@ -54,11 +61,15 @@ internal constructor(
        if (width <= 0 || height <= 0) return
        if (blurAlpha == 0) return
        val wallpapers = blurWallpaperProvider.wallpapers
        blurBitmap = wallpapers?.let { config.getDrawable(it) }
        blurBitmap = wallpapers?.let { config.getDrawable(it) }?.takeUnless { it.isRecycled }
        val scale = config.scale.toFloat()

        if (blurBitmap == null) {
            blurBitmap = blurWallpaperProvider.placeholder
            blurBitmap = blurWallpaperProvider.placeholder?.takeUnless { it.isRecycled }
        }

        if (blurPaint.shader == null) {
            return
        }

        val left = blurBounds.left + offsetX
+0 −2
Original line number Diff line number Diff line
@@ -48,7 +48,6 @@ class BlurWallpaperProvider(val context: Context) : SafeCloseable {
    var wallpapers: BlurSizes? = null
        private set(value) {
            if (field != value) {
                field?.recycle()
                field = value
            }
        }
@@ -56,7 +55,6 @@ class BlurWallpaperProvider(val context: Context) : SafeCloseable {
    var placeholder: Bitmap? = null
        private set(value) {
            if (field != value) {
                field?.recycle()
                field = value
            }
        }