From c1dd80bd71980c6e44f74257d91996ed78509ced Mon Sep 17 00:00:00 2001 From: Ahmad Ansori Palembani Date: Sat, 31 Aug 2024 21:40:33 +0700 Subject: [PATCH] fix(reader): Return the original image if split bitmap failed --- .../ui/reader/viewer/pager/PagerPageHolder.kt | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt index ca65e6e6f6..24d9517835 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt @@ -600,6 +600,8 @@ class PagerPageHolder( scope.launchUI { progressIndicator.completeAndFadeOut() } return imageSource } + + // Try to split if (page.longPage == true && viewer.config.splitPages) { val imageBitmap = try { BitmapFactory.decodeStream(imageSource.peek().inputStream()) @@ -608,17 +610,24 @@ class PagerPageHolder( return imageSource } val isLTR = (viewer !is R2LPagerViewer).xor(viewer.config.invertDoublePages) - return ImageUtil.splitBitmap(imageBitmap, (page.firstHalf == false).xor(!isLTR)) { - scope.launchUI { - if (it == 100) { - progressIndicator.completeAndFadeOut() - } else { - progressIndicator.setProgress(it) + return try { + ImageUtil.splitBitmap(imageBitmap, (page.firstHalf == false).xor(!isLTR)) { + scope.launchUI { + if (it == 100) { + progressIndicator.completeAndFadeOut() + } else { + progressIndicator.setProgress(it) + } } } + } catch (e: NullPointerException) { + Logger.e(e) { "Cannot split page" } + imageSource } } + if (imageSource2 == null) { + // Detect if page is wide enough to be split if (viewer.config.splitPages && page.longPage == null) { val imageBitmap = try { BitmapFactory.decodeStream(imageSource.peek().inputStream()) @@ -663,7 +672,10 @@ class PagerPageHolder( } return supportHingeIfThere(imageSource) } + + // Too wide to be merged if (page.fullPage == true) return supportHingeIfThere(imageSource) + val imageBitmap = try { BitmapFactory.decodeStream(imageSource.peek().inputStream()) } catch (e: Exception) {