From c1533ec66d3130ebe72708dd8fef328814f02436 Mon Sep 17 00:00:00 2001 From: tarsin Date: Wed, 18 Jan 2023 18:23:46 +0800 Subject: [PATCH] Avoid unnecessary lambda object create --- app/src/main/java/com/hippo/image/Image.kt | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/hippo/image/Image.kt b/app/src/main/java/com/hippo/image/Image.kt index 279119fc3..1076e9792 100644 --- a/app/src/main/java/com/hippo/image/Image.kt +++ b/app/src/main/java/com/hippo/image/Image.kt @@ -28,7 +28,7 @@ import com.hippo.ehviewer.EhApplication import java.nio.ByteBuffer import kotlin.math.min -class Image private constructor(source: Source, private var releaseCall: (() -> Unit)? = null) { +class Image private constructor(source: Source, private var src: ByteBufferSource?) { var mObtainedDrawable: Drawable? init { @@ -43,8 +43,8 @@ class Image private constructor(source: Source, private var releaseCall: (() -> ) } if (mObtainedDrawable is BitmapDrawable) { - releaseCall?.invoke() - releaseCall = null + src?.close() + src = null } } @@ -57,12 +57,12 @@ class Image private constructor(source: Source, private var releaseCall: (() -> fun recycle() { (mObtainedDrawable as? Animatable)?.run { stop() - releaseCall?.invoke() - releaseCall = null } (mObtainedDrawable as? BitmapDrawable)?.run { bitmap.recycle() } mObtainedDrawable?.callback = null mObtainedDrawable = null + src?.close() + src = null } companion object { @@ -82,9 +82,7 @@ class Image private constructor(source: Source, private var releaseCall: (() -> check(directBuffer.isDirect) rewriteGifSource(directBuffer) return runCatching { - Image(ImageDecoder.createSource(directBuffer)) { - src.close() - } + Image(ImageDecoder.createSource(directBuffer), src) }.onFailure { src.close() it.printStackTrace()