From f6458cd8ee9a04bf57af41a75438ea05d1ef29a5 Mon Sep 17 00:00:00 2001 From: tarsin Date: Tue, 28 Feb 2023 17:58:45 +0800 Subject: [PATCH] Cleanup some IO overhead --- app/src/main/cpp/archive.c | 7 ++----- app/src/main/java/com/hippo/UriArchiveAccessor.kt | 2 +- .../java/com/hippo/ehviewer/gallery/ArchivePageLoader.kt | 2 +- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/app/src/main/cpp/archive.c b/app/src/main/cpp/archive.c index 0595236b6..a5500eaf2 100644 --- a/app/src/main/cpp/archive.c +++ b/app/src/main/cpp/archive.c @@ -459,7 +459,7 @@ Java_com_hippo_UriArchiveAccessor_getFilename(JNIEnv *env, jobject thiz, jint in } JNIEXPORT void JNICALL -Java_com_hippo_UriArchiveAccessor_extractToFd(JNIEnv *env, jobject thiz, jint index, jobject fd) { +Java_com_hippo_UriArchiveAccessor_extractToFd(JNIEnv *env, jobject thiz, jint index, jint fd) { EH_UNUSED(env); EH_UNUSED(thiz); index = entries[index].index; @@ -467,10 +467,7 @@ Java_com_hippo_UriArchiveAccessor_extractToFd(JNIEnv *env, jobject thiz, jint in int ret; ret = archive_get_ctx(&ctx, index); if (!ret) { - jclass fdClass = (*env)->FindClass(env, "java/io/FileDescriptor"); - jfieldID fdClassDescriptorFieldID = (*env)->GetFieldID(env, fdClass, "descriptor", "I"); - int realfd = (*env)->GetIntField(env, fd, fdClassDescriptorFieldID); - archive_read_data_into_fd(ctx->arc, realfd); + archive_read_data_into_fd(ctx->arc, fd); ctx->using = 0; } } diff --git a/app/src/main/java/com/hippo/UriArchiveAccessor.kt b/app/src/main/java/com/hippo/UriArchiveAccessor.kt index 9f844f8d9..3aa0edc99 100644 --- a/app/src/main/java/com/hippo/UriArchiveAccessor.kt +++ b/app/src/main/java/com/hippo/UriArchiveAccessor.kt @@ -34,7 +34,7 @@ class UriArchiveAccessor(ctx: Context, private val uri: Uri) { private external fun openArchive(fd: Int, size: Long): Int private external fun extractToByteBuffer(index: Int): ByteBuffer? - external fun extractToFd(index: Int, fd: FileDescriptor) + external fun extractToFd(index: Int, fd: Int) external fun getFilename(index: Int): String external fun needPassword(): Boolean external fun providePassword(str: String): Boolean diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/ArchivePageLoader.kt b/app/src/main/java/com/hippo/ehviewer/gallery/ArchivePageLoader.kt index fe13a5f10..3b60b4b06 100644 --- a/app/src/main/java/com/hippo/ehviewer/gallery/ArchivePageLoader.kt +++ b/app/src/main/java/com/hippo/ehviewer/gallery/ArchivePageLoader.kt @@ -144,7 +144,7 @@ class ArchivePageLoader(context: Context, uri: Uri, passwdFlow: Flow) : e.printStackTrace() return false } - archiveAccessor.extractToFd(index, fd.fileDescriptor) + archiveAccessor.extractToFd(index, fd.fd) try { fd.close() } catch (e: IOException) {