From 591e5f09e90570d96001823438ebbfa7bf4778ef Mon Sep 17 00:00:00 2001 From: Naveen Date: Wed, 24 May 2023 04:20:44 +0530 Subject: [PATCH] Fix `resizeImage()` threading issue --- .../pro/dialogs/ResizeMultipleImagesDialog.kt | 20 ++++----- .../gallery/pro/extensions/Activity.kt | 44 +++++++++---------- 2 files changed, 31 insertions(+), 33 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ResizeMultipleImagesDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ResizeMultipleImagesDialog.kt index 3d2654a0b..df13c5626 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ResizeMultipleImagesDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ResizeMultipleImagesDialog.kt @@ -67,18 +67,18 @@ class ResizeMultipleImagesDialog( private fun resizeImages(factor: Float) { progressView.show() - ensureBackgroundThread { - with(activity) { - val newSizes = imageSizes.map { - val width = (it.x * factor).roundToInt() - val height = (it.y * factor).roundToInt() - Point(width, height) - } + with(activity) { + val newSizes = imageSizes.map { + val width = (it.x * factor).roundToInt() + val height = (it.y * factor).roundToInt() + Point(width, height) + } - val parentPath = imagePaths.first().getParentPath() - val pathsToRescan = arrayListOf() + val parentPath = imagePaths.first().getParentPath() + val pathsToRescan = arrayListOf() - ensureWriteAccess(parentPath) { + ensureWriteAccess(parentPath) { + ensureBackgroundThread { for (i in imagePaths.indices) { val path = imagePaths[i] val size = newSizes[i] diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Activity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Activity.kt index 0d57b52e1..1fdecf9e6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Activity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Activity.kt @@ -823,35 +823,33 @@ fun BaseSimpleActivity.launchResizeImageDialog(path: String, callback: (() -> Un } fun BaseSimpleActivity.resizeImage(path: String, size: Point, callback: (success: Boolean) -> Unit) { - ensureBackgroundThread { - var oldExif: ExifInterface? = null - if (isNougatPlus()) { - val inputStream = contentResolver.openInputStream(Uri.fromFile(File(path))) - oldExif = ExifInterface(inputStream!!) - } + var oldExif: ExifInterface? = null + if (isNougatPlus()) { + val inputStream = contentResolver.openInputStream(Uri.fromFile(File(path))) + oldExif = ExifInterface(inputStream!!) + } - val newBitmap = Glide.with(applicationContext).asBitmap().load(path).submit(size.x, size.y).get() + val newBitmap = Glide.with(applicationContext).asBitmap().load(path).submit(size.x, size.y).get() - val newFile = File(path) - val newFileDirItem = FileDirItem(path, path.getFilenameFromPath()) - getFileOutputStream(newFileDirItem, true) { out -> - if (out != null) { - out.use { - try { - newBitmap.compress(newFile.absolutePath.getCompressionFormat(), 90, out) + val newFile = File(path) + val newFileDirItem = FileDirItem(path, path.getFilenameFromPath()) + getFileOutputStream(newFileDirItem, true) { out -> + if (out != null) { + out.use { + try { + newBitmap.compress(newFile.absolutePath.getCompressionFormat(), 90, out) - if (isNougatPlus()) { - val newExif = ExifInterface(newFile.absolutePath) - oldExif?.copyNonDimensionAttributesTo(newExif) - } - } catch (ignored: Exception) { + if (isNougatPlus()) { + val newExif = ExifInterface(newFile.absolutePath) + oldExif?.copyNonDimensionAttributesTo(newExif) } - - callback(true) + } catch (ignored: Exception) { } - } else { - callback(false) + + callback(true) } + } else { + callback(false) } } }