From abda781f02a2cda510f3cdd40b873d7b9b568645 Mon Sep 17 00:00:00 2001 From: tarsin Date: Wed, 18 Jan 2023 18:50:38 +0800 Subject: [PATCH] Cleanup code --- app/src/main/java/com/hippo/image/Image.kt | 42 ++++++++----------- .../tachiyomi/ui/reader/loader/PageLoader.kt | 4 +- 2 files changed, 19 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/com/hippo/image/Image.kt b/app/src/main/java/com/hippo/image/Image.kt index 1076e9792..48077e0d6 100644 --- a/app/src/main/java/com/hippo/image/Image.kt +++ b/app/src/main/java/com/hippo/image/Image.kt @@ -29,36 +29,30 @@ import java.nio.ByteBuffer import kotlin.math.min class Image private constructor(source: Source, private var src: ByteBufferSource?) { - var mObtainedDrawable: Drawable? - - init { - mObtainedDrawable = - ImageDecoder.decodeDrawable(source) { decoder: ImageDecoder, info: ImageInfo, _: Source -> - decoder.setTargetColorSpace(colorSpace) - decoder.setTargetSampleSize( - min( - info.size.width / (2 * screenWidth), - info.size.height / (2 * screenHeight) - ).coerceAtLeast(1) - ) + var mObtainedDrawable: Drawable? = + ImageDecoder.decodeDrawable(source) { decoder: ImageDecoder, info: ImageInfo, _: Source -> + decoder.setTargetColorSpace(colorSpace) + decoder.setTargetSampleSize( + min( + info.size.width / (2 * screenWidth), + info.size.height / (2 * screenHeight) + ).coerceAtLeast(1) + ) + }.also { + (it as? BitmapDrawable)?.run { + src?.close() + src = null } - if (mObtainedDrawable is BitmapDrawable) { - src?.close() - src = null } - } + private set - val width: Int - get() = mObtainedDrawable?.intrinsicWidth ?: 0 - val height: Int - get() = mObtainedDrawable?.intrinsicHeight ?: 0 + val size: Int + get() = mObtainedDrawable!!.run { intrinsicHeight * intrinsicWidth * 4 * if (this is Animatable) 4 else 1 } @Synchronized fun recycle() { - (mObtainedDrawable as? Animatable)?.run { - stop() - } - (mObtainedDrawable as? BitmapDrawable)?.run { bitmap.recycle() } + (mObtainedDrawable as? Animatable)?.stop() + (mObtainedDrawable as? BitmapDrawable)?.bitmap?.recycle() mObtainedDrawable?.callback = null mObtainedDrawable = null src?.close() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/PageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/PageLoader.kt index 00c9b6233..ca2e5070e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/PageLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/PageLoader.kt @@ -1,6 +1,5 @@ package eu.kanade.tachiyomi.ui.reader.loader -import android.graphics.drawable.Animatable import androidx.annotation.CallSuper import androidx.collection.LruCache import com.hippo.image.Image @@ -100,8 +99,7 @@ abstract class PageLoader { } override fun sizeOf(key: Int, value: Image): Int { - if (value.mObtainedDrawable is Animatable) return value.height * value.width * 15 - return value.height * value.width * 4 + return value.size } override fun entryRemoved(evicted: Boolean, key: Int, oldValue: Image, newValue: Image?) {