diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webgpu/WebGpuViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webgpu/WebGpuViewer.kt index d567f2533..2e33b8aba 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webgpu/WebGpuViewer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webgpu/WebGpuViewer.kt @@ -1156,6 +1156,7 @@ open class WebGpuViewer( page.page.downloadStream?.let { startStreamDecode(page, it) } true } + is Page.State.Error -> { logcat(LogPriority.ERROR) { "Page load error: ${state.error}" } false @@ -1626,8 +1627,12 @@ open class WebGpuViewer( // not wide enough if (aspectRatio < 1.1) return false - // Wide page: half the image width is wider than the screen aspect ratio - if (aspectRatio <= 2f * screenW.toFloat() / screenH) return false + // Wide page: half of it is wider than the screen aspect ratio or matches a decoded neighbour's shape + val isWide = listOf(viewerPageFor(page)?.prev, viewerPageFor(page)?.next) + .mapNotNull { (it as? ViewerReaderPage)?.aspectRatio } + .any { abs(aspectRatio / 2f - it) <= pairAspectTolerance } || + (aspectRatio > 2f * screenW.toFloat() / screenH) + if (!isWide) return false page.parent = pager.state @@ -1743,6 +1748,7 @@ open class WebGpuViewer( if (cachedPage.page.status == Page.State.Queue) requestDownload(cachedPage) return } + PageState.DECODING -> return // Ready requeues it, once downloaded. PageState.QUEUED -> decodeQueue.remove(cachedPage) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e240440e6..f97d90789 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -76,7 +76,7 @@ tapmoc = "0.4.2" unifile = "08f224c8f9" valkyrie = "0.5.2" voyager = "2.2.21-1.10.3" -webgpuviewer = "51" +webgpuviewer = "52" xmlutil = "1.0.2" [libraries]