mirror of
https://github.com/aniyomiorg/aniyomi.git
synced 2024-12-18 11:12:27 +03:00
parent
ddd180e56a
commit
8ef200861c
1 changed files with 17 additions and 15 deletions
|
@ -246,19 +246,19 @@ class WebtoonPageHolder(
|
||||||
unsubscribeReadImageHeader()
|
unsubscribeReadImageHeader()
|
||||||
val streamFn = page?.stream ?: return
|
val streamFn = page?.stream ?: return
|
||||||
|
|
||||||
|
var openStream: InputStream? = null
|
||||||
readImageHeaderSubscription = Observable
|
readImageHeaderSubscription = Observable
|
||||||
.fromCallable {
|
.fromCallable {
|
||||||
val stream = streamFn().buffered(16)
|
val stream = streamFn().buffered(16)
|
||||||
val imageStream = process(stream)
|
openStream = process(stream)
|
||||||
val isAnimated = ImageUtil.isAnimatedAndSupported(stream)
|
|
||||||
Pair(imageStream, isAnimated)
|
ImageUtil.isAnimatedAndSupported(stream)
|
||||||
}
|
}
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.doOnNext { (imageStream, isAnimated) ->
|
.doOnNext { isAnimated ->
|
||||||
imageStream.use {
|
|
||||||
frame.setImage(
|
frame.setImage(
|
||||||
it,
|
openStream!!,
|
||||||
isAnimated,
|
isAnimated,
|
||||||
ReaderPageImageView.Config(
|
ReaderPageImageView.Config(
|
||||||
zoomDuration = viewer.config.doubleTapAnimDuration,
|
zoomDuration = viewer.config.doubleTapAnimDuration,
|
||||||
|
@ -267,7 +267,9 @@ class WebtoonPageHolder(
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
// Keep the Rx stream alive to close the input stream only when unsubscribed
|
||||||
|
.flatMap { Observable.never<Unit>() }
|
||||||
|
.doOnUnsubscribe { openStream?.close() }
|
||||||
.subscribe({}, {})
|
.subscribe({}, {})
|
||||||
|
|
||||||
addSubscription(readImageHeaderSubscription)
|
addSubscription(readImageHeaderSubscription)
|
||||||
|
|
Loading…
Reference in a new issue