Update jni crate

This commit is contained in:
Ethan O'Brien
2026-05-03 19:20:18 -05:00
parent 67a849e506
commit 902fbaec55
3 changed files with 86 additions and 162 deletions

View File

@@ -1,8 +1,8 @@
use jni::JNIEnv;
use jni::objects::{JClass};
use jni::sys::{jstring, jboolean};
use jni::{Env, EnvUnowned};
use jni::objects::{JClass, JString};
use jni::sys::jstring;
use jni::errors::ThrowRuntimeExAndDefault;
use std::thread;
use jni::objects::JString;
use crate::{run_server, stop_server};
use std::os::raw::c_char;
@@ -27,34 +27,51 @@ macro_rules! log_to_logcat {
}
#[unsafe(no_mangle)]
extern "C" fn Java_one_ethanthesleepy_androidew_BackgroundService_startServer<'local>(
mut env: JNIEnv<'local>,
pub extern "system" fn Java_one_ethanthesleepy_androidew_BackgroundService_startServer<'local>(
mut unowned_env: EnvUnowned<'local>,
_class: JClass<'local>,
data_path: JString<'local>,
easter: jboolean
easter: bool,
) -> jstring {
crate::runtime::set_easter_mode(easter != 0);
crate::runtime::set_easter_mode(easter);
let data_path: String = env.get_string(&data_path).unwrap().into();
crate::runtime::update_data_path(&data_path);
unowned_env
.with_env(|env: &mut Env<'local>| -> jni::errors::Result<jstring> {
let data_path: String = data_path.to_string();
crate::runtime::update_data_path(&data_path);
let output = env.new_string(String::from("Azunyannnn~")).unwrap();
thread::spawn(|| {
run_server(true).unwrap();
});
log_to_logcat!("ew", "running");
output.into_raw()
let output = JString::from_str(env, "Azunyannnn~")?;
thread::spawn(|| {
run_server(true).unwrap();
});
log_to_logcat!("ew", "running");
Ok(output.into_raw())
})
.resolve::<ThrowRuntimeExAndDefault>()
}
#[unsafe(no_mangle)]
extern "C" fn Java_one_ethanthesleepy_androidew_BackgroundService_stopServer<'local>(env: JNIEnv<'local>, _class: JClass<'local>) -> jstring {
pub extern "system" fn Java_one_ethanthesleepy_androidew_BackgroundService_stopServer<'local>(
mut unowned_env: EnvUnowned<'local>,
_class: JClass<'local>,
) -> jstring {
stop_server();
let output = env.new_string(String::from("I like Yui!")).unwrap();
output.into_raw()
}
unowned_env
.with_env(|env: &mut Env<'local>| -> jni::errors::Result<jstring> {
let output = JString::from_str(env, "I like Yui!")?;
Ok(output.into_raw())
})
.resolve::<ThrowRuntimeExAndDefault>()
}
#[unsafe(no_mangle)]
extern "C" fn Java_one_ethanthesleepy_androidew_BackgroundService_setEasterMode<'local>(_env: JNIEnv<'local>, _class: JClass<'local>, easter: jboolean) {
crate::runtime::set_easter_mode(easter != 0);
pub extern "system" fn Java_one_ethanthesleepy_androidew_BackgroundService_setEasterMode<'local>(
_unowned_env: EnvUnowned<'local>,
_class: JClass<'local>,
easter: bool,
) {
crate::runtime::set_easter_mode(easter);
}