Cleanup some IO overhead

This commit is contained in:
tarsin committed 2023-02-28 17:58:45 +08:00
1 parent 5c18dad1d8
commit f6458cd8ee
3 files changed
+4 -7

No files matched your search

+2 -5
View File
@@ -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;
}
}
@@ -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
@@ -144,7 +144,7 @@ class ArchivePageLoader(context: Context, uri: Uri, passwdFlow: Flow<String>) :
e.printStackTrace()
return false
}
archiveAccessor.extractToFd(index, fd.fileDescriptor)
archiveAccessor.extractToFd(index, fd.fd)
try {
fd.close()
} catch (e: IOException) {