Compare commits

...
Author SHA1 Message Date
tarsin 4512f2a375 Bump Versio
Releases / Build (push) Has been cancelled
2023-01-20 18:07:19 +08:00
tarsin 68442afa0f Update coil 2023-01-20 12:31:46 +08:00
tarsin ddf4d0cbc3 Use our modified coil temporarily 2023-01-20 10:59:38 +08:00
FooIbar 4be185e428 Resolve #696 2023-01-19 21:30:24 +08:00
tarsin f75e66ac19 Upgrade compose compiler 2023-01-18 21:21:40 +08:00
tarsin abda781f02 Cleanup code 2023-01-18 18:50:38 +08:00
tarsin c1533ec66d Avoid unnecessary lambda object create 2023-01-18 18:23:46 +08:00
4 changed files with 30 additions and 37 deletions

No files matched your search

+4 -3
View File
@@ -33,7 +33,7 @@ android {
minSdkVersion 28
targetSdkVersion 33
versionCode 180030
versionName "1.8.5.3-alpha06"
versionName "1.8.5.3-rc01"
resConfigs 'zh', 'zh-rCN', 'zh-rHK', 'zh-rTW', 'es', 'ja', 'ko', 'fr', 'de', 'th'
}
@@ -94,7 +94,7 @@ android {
}
composeOptions {
kotlinCompilerExtensionVersion = "1.4.0-dev-k1.8.0-33c0ad36f83"
kotlinCompilerExtensionVersion = "1.4.0"
}
namespace 'com.hippo.ehviewer'
@@ -154,7 +154,8 @@ dependencies {
implementation 'dev.rikka.rikkax.preference:simplemenu-preference:1.0.3'
implementation 'dev.rikka.rikkax.material:material-preference:2.0.0'
// https://coil-kt.github.io/coil/changelog/
implementation 'io.coil-kt:coil:2.2.2'
// implementation 'io.coil-kt:coil:2.2.2'
implementation 'com.github.Ehviewer-Overhauled.coil:coil:d65881d'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4'
implementation 'org.jsoup:jsoup:1.15.3'
}
+22 -30
View File
@@ -28,41 +28,35 @@ import com.hippo.ehviewer.EhApplication
import java.nio.ByteBuffer
import kotlin.math.min
class Image private constructor(source: Source, private var releaseCall: (() -> Unit)? = null) {
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)
)
class Image private constructor(source: Source, private var src: ByteBufferSource?) {
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) {
releaseCall?.invoke()
releaseCall = 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()
releaseCall?.invoke()
releaseCall = null
}
(mObtainedDrawable as? BitmapDrawable)?.run { bitmap.recycle() }
(mObtainedDrawable as? Animatable)?.stop()
(mObtainedDrawable as? BitmapDrawable)?.bitmap?.recycle()
mObtainedDrawable?.callback = null
mObtainedDrawable = null
src?.close()
src = null
}
companion object {
@@ -82,9 +76,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()
@@ -28,6 +28,7 @@ import androidx.core.content.ContextCompat
import coil.imageLoader
import coil.request.Disposable
import coil.request.ImageRequest
import coil.size.Size
import com.hippo.drawable.PreciselyClipDrawable
import com.hippo.ehviewer.R
@@ -134,7 +135,8 @@ open class LoadImageView @JvmOverloads constructor(
clearRetry()
task?.dispose()
mRequest =
ImageRequest.Builder(context).data(url).memoryCacheKey(key).diskCacheKey(key).target(
ImageRequest.Builder(context).data(url).memoryCacheKey(key).diskCacheKey(key)
.size(Size.ORIGINAL).target(
{ onWait() },
{ onFailure() },
{ onGetValue(it, isLoaded) }
@@ -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?) {