From e8b46b02d8c0b1cd5f4d1163b2468457521c48ac Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Sun, 6 Nov 2022 12:31:13 +0100 Subject: [PATCH] minor fix --- .../calls/fetchers/TiffRegionFetcher.kt | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/fetchers/TiffRegionFetcher.kt b/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/fetchers/TiffRegionFetcher.kt index 56cb7c199..3f6f8805f 100644 --- a/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/fetchers/TiffRegionFetcher.kt +++ b/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/fetchers/TiffRegionFetcher.kt @@ -19,22 +19,24 @@ class TiffRegionFetcher internal constructor( result: MethodChannel.Result, ) { try { - @Suppress("BlockingMethodInNonBlockingContext") - val fd = context.contentResolver.openFileDescriptor(uri, "r")?.detachFd() - if (fd == null) { + val pfd = context.contentResolver.openFileDescriptor(uri, "r") + if (pfd == null) { result.error("getRegion-tiff-fd", "failed to get file descriptor for uri=$uri", null) return } - val options = TiffBitmapFactory.Options().apply { - inDirectoryNumber = page - inSampleSize = sampleSize - inDecodeArea = DecodeArea(regionRect.left, regionRect.top, regionRect.width(), regionRect.height()) - } - val bitmap = TiffBitmapFactory.decodeFileDescriptor(fd, options) - if (bitmap != null) { - result.success(bitmap.getBytes(canHaveAlpha = true, recycle = true)) - } else { - result.error("getRegion-tiff-null", "failed to decode region for uri=$uri page=$page regionRect=$regionRect", null) + pfd.use { + val fd = pfd.detachFd() + val options = TiffBitmapFactory.Options().apply { + inDirectoryNumber = page + inSampleSize = sampleSize + inDecodeArea = DecodeArea(regionRect.left, regionRect.top, regionRect.width(), regionRect.height()) + } + val bitmap = TiffBitmapFactory.decodeFileDescriptor(fd, options) + if (bitmap != null) { + result.success(bitmap.getBytes(canHaveAlpha = true, recycle = true)) + } else { + result.error("getRegion-tiff-null", "failed to decode region for uri=$uri page=$page regionRect=$regionRect", null) + } } } catch (e: Exception) { result.error("getRegion-tiff-read-exception", "failed to read from uri=$uri page=$page regionRect=$regionRect", e.message)