KernelIO motto motto

This commit is contained in:
tarsin committed 2023-02-23 22:52:57 +08:00
1 parent c808e9135d
commit 4f81d164c8
2 files changed
+17 -7

No files matched your search

+12
View File
@@ -17,6 +17,7 @@
*/
package com.hippo
import android.os.ParcelFileDescriptor
import java.io.FileDescriptor
object Native {
@@ -30,3 +31,14 @@ object Native {
@JvmStatic
external fun sendfile(from: Int, to: Int)
}
val FileDescriptor.fd
get() = Native.getFd(this)
infix fun ParcelFileDescriptor.receivefrom(fd: FileDescriptor) {
Native.sendfile(fd.fd, getFd())
}
infix fun ParcelFileDescriptor.copyTo(fd: FileDescriptor) {
Native.sendfile(getFd(), fd.fd)
}
@@ -16,10 +16,13 @@
package com.hippo.ehviewer.spider
import android.graphics.ImageDecoder
import android.os.ParcelFileDescriptor
import android.os.ParcelFileDescriptor.MODE_READ_WRITE
import coil.decode.DecodeUtils
import coil.decode.FrameDelayRewritingSource
import coil.decode.isGif
import coil.disk.DiskCache
import com.hippo.copyTo
import com.hippo.ehviewer.EhApplication
import com.hippo.ehviewer.EhApplication.Companion.application
import com.hippo.ehviewer.EhDB
@@ -30,7 +33,6 @@ import com.hippo.ehviewer.client.EhUtils.getSuitableTitle
import com.hippo.ehviewer.client.data.GalleryInfo
import com.hippo.ehviewer.coil.edit
import com.hippo.ehviewer.coil.read
import com.hippo.ehviewer.gallery.PageLoader2
import com.hippo.ehviewer.gallery.SUPPORT_IMAGE_EXTENSIONS
import com.hippo.image.Image.CloseableSource
import com.hippo.unifile.RawFile
@@ -116,12 +118,8 @@ class SpiderDen(private val mGalleryInfo: GalleryInfo) {
val extension = fixExtension("." + metadata.toFile().readText())
val file = dir.createFile(generateImageFilename(index, extension)) ?: return false
(file.openOutputStream() as FileOutputStream).use { outputStream ->
outputStream.channel.use { outChannel ->
data.toFile().inputStream().use { inputStream ->
inputStream.channel.use {
outChannel.transferFrom(it, 0, it.size())
}
}
ParcelFileDescriptor.open(data.toFile(), MODE_READ_WRITE).use {
it copyTo outputStream.fd
}
}
}