Fix pages cache usage

master
Koitharu 1 year ago
parent 4dba90361c
commit 9e2b60e15e
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -184,11 +184,8 @@ class PageLoader @Inject constructor(
prefetchLock.withLock { prefetchLock.withLock {
while (prefetchQueue.isNotEmpty()) { while (prefetchQueue.isNotEmpty()) {
val page = prefetchQueue.pollFirst() ?: return@launch val page = prefetchQueue.pollFirst() ?: return@launch
if (cache.get(page.url) == null) { // FIXME use pageUrl synchronized(tasks) {
synchronized(tasks) { tasks[page.id] = loadPageAsyncImpl(page, skipCache = false, isPrefetch = true)
tasks[page.id] = loadPageAsyncImpl(page, skipCache = false, isPrefetch = true)
}
return@launch
} }
} }
} }
@ -201,13 +198,14 @@ class PageLoader @Inject constructor(
): ProgressDeferred<Uri, Float> { ): ProgressDeferred<Uri, Float> {
val progress = MutableStateFlow(PROGRESS_UNDEFINED) val progress = MutableStateFlow(PROGRESS_UNDEFINED)
val deferred = loaderScope.async { val deferred = loaderScope.async {
if (!skipCache) {
// FIXME use pageUrl
cache.get(page.url)?.let { return@async it.toUri() }
}
counter.incrementAndGet() counter.incrementAndGet()
try { try {
loadPageImpl(page, progress, isPrefetch) loadPageImpl(
page = page,
progress = progress,
isPrefetch = isPrefetch,
skipCache = skipCache,
)
} finally { } finally {
if (counter.decrementAndGet() == 0) { if (counter.decrementAndGet() == 0) {
onIdle() onIdle()
@ -231,9 +229,13 @@ class PageLoader @Inject constructor(
page: MangaPage, page: MangaPage,
progress: MutableStateFlow<Float>, progress: MutableStateFlow<Float>,
isPrefetch: Boolean, isPrefetch: Boolean,
skipCache: Boolean,
): Uri = semaphore.withPermit { ): Uri = semaphore.withPermit {
val pageUrl = getPageUrl(page) val pageUrl = getPageUrl(page)
check(pageUrl.isNotBlank()) { "Cannot obtain full image url for $page" } check(pageUrl.isNotBlank()) { "Cannot obtain full image url for $page" }
if (!skipCache) {
cache.get(pageUrl)?.let { return it.toUri() }
}
val uri = Uri.parse(pageUrl) val uri = Uri.parse(pageUrl)
return when { return when {
uri.isZipUri() -> if (uri.scheme == URI_SCHEME_ZIP) { uri.isZipUri() -> if (uri.scheme == URI_SCHEME_ZIP) {

Loading…
Cancel
Save