summaryrefslogtreecommitdiff
path: root/Source/Android/jni/AndroidCommon/IDCache.cpp
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2020-07-06 16:57:49 +0200
committerJosJuice <josjuice@gmail.com>2020-09-06 13:29:52 +0200
commit74f197caedf00df80c411f6cfb299fae5822adba (patch)
tree6a2d140251f2a35e0ece2aab15a0f0acf7b9ae9b /Source/Android/jni/AndroidCommon/IDCache.cpp
parentc8c4ec28ce3961dddec3b92dfad8cc5f7b199c5f (diff)
Android: Expose a proper interface for C++ IniFile class
Replaces the inflexible INI functions in NativeLibrary.
Diffstat (limited to 'Source/Android/jni/AndroidCommon/IDCache.cpp')
-rw-r--r--Source/Android/jni/AndroidCommon/IDCache.cpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/Source/Android/jni/AndroidCommon/IDCache.cpp b/Source/Android/jni/AndroidCommon/IDCache.cpp
index 32160edaee..8383f8ed68 100644
--- a/Source/Android/jni/AndroidCommon/IDCache.cpp
+++ b/Source/Android/jni/AndroidCommon/IDCache.cpp
@@ -30,6 +30,12 @@ static jclass s_linked_hash_map_class;
static jmethodID s_linked_hash_map_init;
static jmethodID s_linked_hash_map_put;
+static jclass s_ini_file_class;
+static jfieldID s_ini_file_pointer;
+static jclass s_ini_file_section_class;
+static jfieldID s_ini_file_section_pointer;
+static jmethodID s_ini_file_section_constructor;
+
namespace IDCache
{
JNIEnv* GetEnvForThread()
@@ -89,6 +95,7 @@ jmethodID GetAnalyticsValue()
{
return s_get_analytics_value;
}
+
jclass GetGameFileClass()
{
return s_game_file_class;
@@ -129,6 +136,31 @@ jmethodID GetLinkedHashMapPut()
return s_linked_hash_map_put;
}
+jclass GetIniFileClass()
+{
+ return s_ini_file_class;
+}
+
+jfieldID GetIniFilePointer()
+{
+ return s_ini_file_pointer;
+}
+
+jclass GetIniFileSectionClass()
+{
+ return s_ini_file_section_class;
+}
+
+jfieldID GetIniFileSectionPointer()
+{
+ return s_ini_file_section_pointer;
+}
+
+jmethodID GetIniFileSectionConstructor()
+{
+ return s_ini_file_section_constructor;
+}
+
} // namespace IDCache
#ifdef __cplusplus
@@ -150,16 +182,19 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved)
s_do_rumble = env->GetStaticMethodID(s_native_library_class, "rumble", "(ID)V");
s_get_update_touch_pointer =
env->GetStaticMethodID(s_native_library_class, "updateTouchPointer", "()V");
+ env->DeleteLocalRef(native_library_class);
const jclass game_file_class = env->FindClass("org/dolphinemu/dolphinemu/model/GameFile");
s_game_file_class = reinterpret_cast<jclass>(env->NewGlobalRef(game_file_class));
s_game_file_pointer = env->GetFieldID(game_file_class, "mPointer", "J");
s_game_file_constructor = env->GetMethodID(game_file_class, "<init>", "(J)V");
+ env->DeleteLocalRef(game_file_class);
const jclass game_file_cache_class =
env->FindClass("org/dolphinemu/dolphinemu/model/GameFileCache");
s_game_file_cache_class = reinterpret_cast<jclass>(env->NewGlobalRef(game_file_cache_class));
s_game_file_cache_pointer = env->GetFieldID(game_file_cache_class, "mPointer", "J");
+ env->DeleteLocalRef(game_file_cache_class);
const jclass analytics_class = env->FindClass("org/dolphinemu/dolphinemu/utils/Analytics");
s_analytics_class = reinterpret_cast<jclass>(env->NewGlobalRef(analytics_class));
@@ -167,6 +202,20 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved)
env->GetStaticMethodID(s_analytics_class, "sendReport", "(Ljava/lang/String;[B)V");
s_get_analytics_value = env->GetStaticMethodID(s_analytics_class, "getValue",
"(Ljava/lang/String;)Ljava/lang/String;");
+ env->DeleteLocalRef(analytics_class);
+
+ const jclass ini_file_class = env->FindClass("org/dolphinemu/dolphinemu/utils/IniFile");
+ s_ini_file_class = reinterpret_cast<jclass>(env->NewGlobalRef(ini_file_class));
+ s_ini_file_pointer = env->GetFieldID(ini_file_class, "mPointer", "J");
+ env->DeleteLocalRef(ini_file_class);
+
+ const jclass ini_file_section_class =
+ env->FindClass("org/dolphinemu/dolphinemu/utils/IniFile$Section");
+ s_ini_file_section_class = reinterpret_cast<jclass>(env->NewGlobalRef(ini_file_section_class));
+ s_ini_file_section_pointer = env->GetFieldID(ini_file_section_class, "mPointer", "J");
+ s_ini_file_section_constructor = env->GetMethodID(
+ ini_file_section_class, "<init>", "(Lorg/dolphinemu/dolphinemu/utils/IniFile;J)V");
+ env->DeleteLocalRef(ini_file_section_class);
const jclass map_class = env->FindClass("java/util/LinkedHashMap");
s_linked_hash_map_class = reinterpret_cast<jclass>(env->NewGlobalRef(map_class));
@@ -188,6 +237,8 @@ void JNI_OnUnload(JavaVM* vm, void* reserved)
env->DeleteGlobalRef(s_game_file_cache_class);
env->DeleteGlobalRef(s_analytics_class);
env->DeleteGlobalRef(s_linked_hash_map_class);
+ env->DeleteGlobalRef(s_ini_file_class);
+ env->DeleteGlobalRef(s_ini_file_section_class);
}
#ifdef __cplusplus