commit 8c4e32d614f5a913eb81eabb5a32a57b3120fcd4
parent d3f9d03dcfd8631d79903abe46b1dc93c46e79b6
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date: Sun, 28 Jul 2024 19:39:57 +0200
feat(native): pre init
Diffstat:
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/native/rust/src/lib.rs b/native/rust/src/lib.rs
@@ -24,7 +24,10 @@ use std::ffi::c_void;
use std::thread::JoinHandle;
fn pre_init() {
+ debug!("Pre init");
linker_hook::init();
+ custom_font_hook::init();
+ fstat_hook::init();
}
fn init(mut env: JNIEnv, _class: JObject, signature_cache: JString) -> jstring {
@@ -66,9 +69,7 @@ fn init(mut env: JNIEnv, _class: JObject, signature_cache: JString) -> jstring {
duplex_hook::init(),
unary_call_hook::init(),
composer_hook::init(),
- fstat_hook::init(),
- sqlite_hook::init(),
- custom_font_hook::init()
+ sqlite_hook::init()
);
threads.into_iter().for_each(|t| t.join().unwrap());
@@ -109,6 +110,11 @@ pub extern "system" fn JNI_OnLoad(_vm: JavaVM, _: *mut c_void) -> jint {
native_lib_class,
&[
NativeMethod {
+ name: "preInit".into(),
+ sig: "()V".into(),
+ fn_ptr: pre_init as *mut c_void,
+ },
+ NativeMethod {
name: "init".into(),
sig: "(Ljava/lang/String;)Ljava/lang/String;".into(),
fn_ptr: init as *mut c_void,
@@ -141,7 +147,5 @@ pub extern "system" fn JNI_OnLoad(_vm: JavaVM, _: *mut c_void) -> jint {
]
).expect("Failed to register native methods");
- pre_init();
-
JNI_VERSION_1_6
}
diff --git a/native/src/main/kotlin/me/rhunk/snapenhance/nativelib/NativeLib.kt b/native/src/main/kotlin/me/rhunk/snapenhance/nativelib/NativeLib.kt
@@ -20,6 +20,7 @@ class NativeLib {
System.loadLibrary(BuildConfig.NATIVE_NAME)
initialized = true
callback(this)
+ preInit()
return@runCatching {
signatureCache = init(signatureCache) ?: throw IllegalStateException("NativeLib init failed. Check logcat for more info")
}
@@ -65,6 +66,7 @@ class NativeLib {
System.load(generatedPath)
}
+ private external fun preInit()
private external fun init(signatureCache: String?): String?
private external fun loadConfig(config: NativeConfig)
private external fun lockDatabase(name: String, callback: Runnable)