diff --git a/app/src/main/kotlin/com/hippo/ehviewer/image/Image.kt b/app/src/main/kotlin/com/hippo/ehviewer/image/Image.kt index ed762631a..576051e95 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/image/Image.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/image/Image.kt @@ -92,7 +92,7 @@ class Image private constructor(image: CoilImage, private val src: AutoCloseable suspend fun decode(src: ImageSource): Image? { return runCatching { - when (src) { + val image = when (src) { is UniFileSource -> { if (isAtLeastP && !isAtLeastU) { src.source.openFileDescriptor("rw").use { @@ -110,20 +110,19 @@ class Image private constructor(image: CoilImage, private val src: AutoCloseable } } } - val image = src.right().decodeCoil() - if (image is BitmapImage) src.close() - Image(image, src) + src.right().decodeCoil() } is ByteBufferSource -> { if (isAtLeastP && !isAtLeastU) { rewriteGifSource(src.source) } - val image = src.left().decodeCoil() - if (image is BitmapImage) src.close() - Image(image, src) + src.left().decodeCoil() } } + Image(image, src).apply { + if (innerImage is BitmapImage) src.close() + } }.onFailure { src.close() logcat(it)