Просмотр исходного кода

android: Add JNI initialization information for Game class

Unused in this PR, but will be useful later
t895 2 лет назад
Родитель
Сommit
dbddc627d4
2 измененных файлов с 64 добавлено и 0 удалено
  1. 55 0
      src/android/app/src/main/jni/id_cache.cpp
  2. 9 0
      src/android/app/src/main/jni/id_cache.h

+ 55 - 0
src/android/app/src/main/jni/id_cache.cpp

@@ -20,6 +20,15 @@ static jmethodID s_disk_cache_load_progress;
 static jmethodID s_on_emulation_started;
 static jmethodID s_on_emulation_started;
 static jmethodID s_on_emulation_stopped;
 static jmethodID s_on_emulation_stopped;
 
 
+static jclass s_game_class;
+static jmethodID s_game_constructor;
+static jfieldID s_game_title_field;
+static jfieldID s_game_path_field;
+static jfieldID s_game_program_id_field;
+static jfieldID s_game_developer_field;
+static jfieldID s_game_version_field;
+static jfieldID s_game_is_homebrew_field;
+
 static jclass s_string_class;
 static jclass s_string_class;
 static jclass s_pair_class;
 static jclass s_pair_class;
 static jmethodID s_pair_constructor;
 static jmethodID s_pair_constructor;
@@ -85,6 +94,38 @@ jmethodID GetOnEmulationStopped() {
     return s_on_emulation_stopped;
     return s_on_emulation_stopped;
 }
 }
 
 
+jclass GetGameClass() {
+    return s_game_class;
+}
+
+jmethodID GetGameConstructor() {
+    return s_game_constructor;
+}
+
+jfieldID GetGameTitleField() {
+    return s_game_title_field;
+}
+
+jfieldID GetGamePathField() {
+    return s_game_path_field;
+}
+
+jfieldID GetGameProgramIdField() {
+    return s_game_program_id_field;
+}
+
+jfieldID GetGameDeveloperField() {
+    return s_game_developer_field;
+}
+
+jfieldID GetGameVersionField() {
+    return s_game_version_field;
+}
+
+jfieldID GetGameIsHomebrewField() {
+    return s_game_is_homebrew_field;
+}
+
 jclass GetStringClass() {
 jclass GetStringClass() {
     return s_string_class;
     return s_string_class;
 }
 }
@@ -141,6 +182,19 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved) {
     s_on_emulation_stopped =
     s_on_emulation_stopped =
         env->GetStaticMethodID(s_native_library_class, "onEmulationStopped", "(I)V");
         env->GetStaticMethodID(s_native_library_class, "onEmulationStopped", "(I)V");
 
 
+    const jclass game_class = env->FindClass("org/yuzu/yuzu_emu/model/Game");
+    s_game_class = reinterpret_cast<jclass>(env->NewGlobalRef(game_class));
+    s_game_constructor = env->GetMethodID(game_class, "<init>",
+                                          "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/"
+                                          "String;Ljava/lang/String;Ljava/lang/String;Z)V");
+    s_game_title_field = env->GetFieldID(game_class, "title", "Ljava/lang/String;");
+    s_game_path_field = env->GetFieldID(game_class, "path", "Ljava/lang/String;");
+    s_game_program_id_field = env->GetFieldID(game_class, "programId", "Ljava/lang/String;");
+    s_game_developer_field = env->GetFieldID(game_class, "developer", "Ljava/lang/String;");
+    s_game_version_field = env->GetFieldID(game_class, "version", "Ljava/lang/String;");
+    s_game_is_homebrew_field = env->GetFieldID(game_class, "isHomebrew", "Z");
+    env->DeleteLocalRef(game_class);
+
     const jclass string_class = env->FindClass("java/lang/String");
     const jclass string_class = env->FindClass("java/lang/String");
     s_string_class = reinterpret_cast<jclass>(env->NewGlobalRef(string_class));
     s_string_class = reinterpret_cast<jclass>(env->NewGlobalRef(string_class));
     env->DeleteLocalRef(string_class);
     env->DeleteLocalRef(string_class);
@@ -174,6 +228,7 @@ void JNI_OnUnload(JavaVM* vm, void* reserved) {
     env->DeleteGlobalRef(s_disk_cache_progress_class);
     env->DeleteGlobalRef(s_disk_cache_progress_class);
     env->DeleteGlobalRef(s_load_callback_stage_class);
     env->DeleteGlobalRef(s_load_callback_stage_class);
     env->DeleteGlobalRef(s_game_dir_class);
     env->DeleteGlobalRef(s_game_dir_class);
+    env->DeleteGlobalRef(s_game_class);
     env->DeleteGlobalRef(s_string_class);
     env->DeleteGlobalRef(s_string_class);
     env->DeleteGlobalRef(s_pair_class);
     env->DeleteGlobalRef(s_pair_class);
 
 

+ 9 - 0
src/android/app/src/main/jni/id_cache.h

@@ -20,6 +20,15 @@ jmethodID GetDiskCacheLoadProgress();
 jmethodID GetOnEmulationStarted();
 jmethodID GetOnEmulationStarted();
 jmethodID GetOnEmulationStopped();
 jmethodID GetOnEmulationStopped();
 
 
+jclass GetGameClass();
+jmethodID GetGameConstructor();
+jfieldID GetGameTitleField();
+jfieldID GetGamePathField();
+jfieldID GetGameProgramIdField();
+jfieldID GetGameDeveloperField();
+jfieldID GetGameVersionField();
+jfieldID GetGameIsHomebrewField();
+
 jclass GetStringClass();
 jclass GetStringClass();
 jclass GetPairClass();
 jclass GetPairClass();
 jmethodID GetPairConstructor();
 jmethodID GetPairConstructor();