You've already forked android_translation_layer
mirror of
https://gitlab.com/android_translation_layer/android_translation_layer.git
synced 2025-10-27 11:48:10 -07:00
use handle_cache for Looper methods
These methods need to be called very often
This commit is contained in:
@@ -27,11 +27,10 @@ static GThread *main_thread_id;
|
|||||||
void prepare_main_looper(JNIEnv* env) {
|
void prepare_main_looper(JNIEnv* env) {
|
||||||
main_thread_id = g_thread_self();
|
main_thread_id = g_thread_self();
|
||||||
|
|
||||||
jclass class = (*env)->FindClass(env, "android/os/Looper");
|
(*env)->CallStaticVoidMethod(env, handle_cache.looper.class, handle_cache.looper.prepareMainLooper);
|
||||||
(*env)->CallStaticVoidMethod(env, class, _STATIC_METHOD(class, "prepareMainLooper", "()V"));
|
|
||||||
if((*env)->ExceptionCheck(env))
|
if((*env)->ExceptionCheck(env))
|
||||||
(*env)->ExceptionDescribe(env);
|
(*env)->ExceptionDescribe(env);
|
||||||
(*env)->CallStaticVoidMethod(env, class, _STATIC_METHOD(class, "loop", "()V"));
|
(*env)->CallStaticVoidMethod(env, handle_cache.looper.class, handle_cache.looper.loop);
|
||||||
if((*env)->ExceptionCheck(env))
|
if((*env)->ExceptionCheck(env))
|
||||||
(*env)->ExceptionDescribe(env);
|
(*env)->ExceptionDescribe(env);
|
||||||
}
|
}
|
||||||
@@ -62,8 +61,7 @@ static gboolean glib_context_callback(gpointer user_data) {
|
|||||||
JNIEnv *env;
|
JNIEnv *env;
|
||||||
(*jvm)->GetEnv(jvm, (void**)&env, JNI_VERSION_1_6);
|
(*jvm)->GetEnv(jvm, (void**)&env, JNI_VERSION_1_6);
|
||||||
|
|
||||||
jclass class = (*env)->FindClass(env, "android/os/Looper");
|
(*env)->CallStaticVoidMethod(env, handle_cache.looper.class, handle_cache.looper.loop);
|
||||||
(*env)->CallStaticVoidMethod(env, class, _STATIC_METHOD(class, "loop", "()V"));
|
|
||||||
if((*env)->ExceptionCheck(env))
|
if((*env)->ExceptionCheck(env))
|
||||||
(*env)->ExceptionDescribe(env);
|
(*env)->ExceptionDescribe(env);
|
||||||
|
|
||||||
|
|||||||
@@ -137,6 +137,9 @@ void set_up_handle_cache(JNIEnv *env)
|
|||||||
handle_cache.application.class = _REF((*env)->FindClass(env, "android/app/Application"));
|
handle_cache.application.class = _REF((*env)->FindClass(env, "android/app/Application"));
|
||||||
handle_cache.application.get_app_icon_path = _METHOD(handle_cache.application.class, "get_app_icon_path", "()Ljava/lang/String;");
|
handle_cache.application.get_app_icon_path = _METHOD(handle_cache.application.class, "get_app_icon_path", "()Ljava/lang/String;");
|
||||||
|
|
||||||
|
handle_cache.looper.class = _REF((*env)->FindClass(env, "android/os/Looper"));
|
||||||
|
handle_cache.looper.loop = _STATIC_METHOD(handle_cache.looper.class, "loop", "()V");
|
||||||
|
handle_cache.looper.prepareMainLooper = _STATIC_METHOD(handle_cache.looper.class, "prepareMainLooper", "()V");
|
||||||
}
|
}
|
||||||
|
|
||||||
void extract_from_apk(const char *path, const char *target) {
|
void extract_from_apk(const char *path, const char *target) {
|
||||||
|
|||||||
@@ -94,6 +94,11 @@ struct handle_cache {
|
|||||||
jclass class;
|
jclass class;
|
||||||
jmethodID get_app_icon_path;
|
jmethodID get_app_icon_path;
|
||||||
} application;
|
} application;
|
||||||
|
struct {
|
||||||
|
jclass class;
|
||||||
|
jmethodID loop;
|
||||||
|
jmethodID prepareMainLooper;
|
||||||
|
} looper;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct handle_cache handle_cache;
|
extern struct handle_cache handle_cache;
|
||||||
|
|||||||
Reference in New Issue
Block a user