Fix webtoon viewer pages not loading

Partial revert of fddca15182
This commit is contained in:
arkon 2022-09-02 10:02:04 -04:00
parent ddd180e56a
commit 8ef200861c

View File

@ -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)