summaryrefslogtreecommitdiff
path: root/Source/Android
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2025-03-15 16:01:33 +0100
committerGitHub <noreply@github.com>2025-03-15 16:01:33 +0100
commite637a05707b1b146a541da6525a431d42668f5fa (patch)
tree8d5c9a0d4701f1c9940784133671ad58b88d55e1 /Source/Android
parent1f087473aab780692784028f38c8665f9518ba6f (diff)
parentea7928b3cda5749ba1dcc8e534b1474a28efb28a (diff)
Merge pull request #12866 from JosJuice/android-log-types-sorting
Android: Replace log type names map with array
Diffstat (limited to 'Source/Android')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java4
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt8
-rw-r--r--Source/Android/jni/AndroidCommon/IDCache.cpp31
-rw-r--r--Source/Android/jni/AndroidCommon/IDCache.h5
-rw-r--r--Source/Android/jni/MainAndroid.cpp33
5 files changed, 36 insertions, 45 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java
index 8a024499af..e9ab837619 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java
@@ -12,6 +12,7 @@ import android.view.Surface;
import android.widget.Toast;
import androidx.annotation.Keep;
+import androidx.core.util.Pair;
import androidx.fragment.app.FragmentManager;
import org.dolphinemu.dolphinemu.activities.EmulationActivity;
@@ -20,7 +21,6 @@ import org.dolphinemu.dolphinemu.utils.CompressCallback;
import org.dolphinemu.dolphinemu.utils.Log;
import java.lang.ref.WeakReference;
-import java.util.LinkedHashMap;
import java.util.concurrent.Semaphore;
/**
@@ -411,7 +411,7 @@ public final class NativeLibrary
*/
public static native void RefreshWiimotes();
- public static native LinkedHashMap<String, String> GetLogTypeNames();
+ public static native Pair<String, String>[] GetLogTypeNames();
public static native void ReloadLoggerConfig();
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt
index eb18edc0b7..ab0a85e11a 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt
@@ -1972,8 +1972,8 @@ class SettingsFragmentPresenter(
) { SettingsAdapter.clearLog() })
sl.add(HeaderSetting(context, R.string.log_types, 0))
- for ((key, value) in LOG_TYPE_NAMES) {
- sl.add(LogSwitchSetting(key, value, ""))
+ for (logType in LOG_TYPE_NAMES) {
+ sl.add(LogSwitchSetting(logType.first, logType.second, ""))
}
}
@@ -2504,11 +2504,11 @@ class SettingsFragmentPresenter(
fun setAllLogTypes(value: Boolean) {
val settings = fragmentView.settings
- for ((key) in LOG_TYPE_NAMES) {
+ for (logType in LOG_TYPE_NAMES) {
AdHocBooleanSetting(
Settings.FILE_LOGGER,
Settings.SECTION_LOGGER_LOGS,
- key,
+ logType.first,
false
).setBoolean(settings!!, value)
}
diff --git a/Source/Android/jni/AndroidCommon/IDCache.cpp b/Source/Android/jni/AndroidCommon/IDCache.cpp
index 5fe151278f..eba20ead91 100644
--- a/Source/Android/jni/AndroidCommon/IDCache.cpp
+++ b/Source/Android/jni/AndroidCommon/IDCache.cpp
@@ -29,9 +29,8 @@ static jclass s_analytics_class;
static jmethodID s_send_analytics_report;
static jmethodID s_get_analytics_value;
-static jclass s_linked_hash_map_class;
-static jmethodID s_linked_hash_map_init;
-static jmethodID s_linked_hash_map_put;
+static jclass s_pair_class;
+static jmethodID s_pair_constructor;
static jclass s_hash_map_class;
static jmethodID s_hash_map_init;
@@ -212,19 +211,14 @@ jfieldID GetGameFileCachePointer()
return s_game_file_cache_pointer;
}
-jclass GetLinkedHashMapClass()
+jclass GetPairClass()
{
- return s_linked_hash_map_class;
+ return s_pair_class;
}
-jmethodID GetLinkedHashMapInit()
+jmethodID GetPairConstructor()
{
- return s_linked_hash_map_init;
-}
-
-jmethodID GetLinkedHashMapPut()
-{
- return s_linked_hash_map_put;
+ return s_pair_constructor;
}
jclass GetHashMapClass()
@@ -565,12 +559,11 @@ JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved)
"(Ljava/lang/String;)Ljava/lang/String;");
env->DeleteLocalRef(analytics_class);
- const jclass linked_hash_map_class = env->FindClass("java/util/LinkedHashMap");
- s_linked_hash_map_class = reinterpret_cast<jclass>(env->NewGlobalRef(linked_hash_map_class));
- s_linked_hash_map_init = env->GetMethodID(s_linked_hash_map_class, "<init>", "(I)V");
- s_linked_hash_map_put = env->GetMethodID(
- s_linked_hash_map_class, "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
- env->DeleteLocalRef(linked_hash_map_class);
+ const jclass pair_class = env->FindClass("androidx/core/util/Pair");
+ s_pair_class = reinterpret_cast<jclass>(env->NewGlobalRef(pair_class));
+ s_pair_constructor =
+ env->GetMethodID(s_pair_class, "<init>", "(Ljava/lang/Object;Ljava/lang/Object;)V");
+ env->DeleteLocalRef(pair_class);
const jclass hash_map_class = env->FindClass("java/util/HashMap");
s_hash_map_class = reinterpret_cast<jclass>(env->NewGlobalRef(hash_map_class));
@@ -741,7 +734,7 @@ JNIEXPORT void JNI_OnUnload(JavaVM* vm, void* reserved)
env->DeleteGlobalRef(s_game_file_class);
env->DeleteGlobalRef(s_game_file_cache_class);
env->DeleteGlobalRef(s_analytics_class);
- env->DeleteGlobalRef(s_linked_hash_map_class);
+ env->DeleteGlobalRef(s_pair_class);
env->DeleteGlobalRef(s_hash_map_class);
env->DeleteGlobalRef(s_compress_cb_class);
env->DeleteGlobalRef(s_content_handler_class);
diff --git a/Source/Android/jni/AndroidCommon/IDCache.h b/Source/Android/jni/AndroidCommon/IDCache.h
index c324b6cb19..c31f598441 100644
--- a/Source/Android/jni/AndroidCommon/IDCache.h
+++ b/Source/Android/jni/AndroidCommon/IDCache.h
@@ -29,9 +29,8 @@ jmethodID GetGameFileConstructor();
jclass GetGameFileCacheClass();
jfieldID GetGameFileCachePointer();
-jclass GetLinkedHashMapClass();
-jmethodID GetLinkedHashMapInit();
-jmethodID GetLinkedHashMapPut();
+jclass GetPairClass();
+jmethodID GetPairConstructor();
jclass GetHashMapClass();
jmethodID GetHashMapInit();
diff --git a/Source/Android/jni/MainAndroid.cpp b/Source/Android/jni/MainAndroid.cpp
index 00b1b5db61..be1d168730 100644
--- a/Source/Android/jni/MainAndroid.cpp
+++ b/Source/Android/jni/MainAndroid.cpp
@@ -10,6 +10,7 @@
#include <string>
#include <thread>
#include <utility>
+#include <vector>
#include <EGL/egl.h>
#include <android/log.h>
@@ -691,27 +692,25 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_ChangeDisc(J
system.GetDVDInterface().ChangeDisc(Core::CPUThreadGuard{system}, path);
}
-JNIEXPORT jobject JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_GetLogTypeNames(JNIEnv* env,
- jclass)
+JNIEXPORT jobjectArray JNICALL
+Java_org_dolphinemu_dolphinemu_NativeLibrary_GetLogTypeNames(JNIEnv* env, jclass)
{
- std::map<std::string, std::string> map = Common::Log::LogManager::GetInstance()->GetLogTypes();
+ using LogManager = Common::Log::LogManager;
- auto map_size = static_cast<jsize>(map.size());
- jobject linked_hash_map =
- env->NewObject(IDCache::GetLinkedHashMapClass(), IDCache::GetLinkedHashMapInit(), map_size);
- for (const auto& entry : map)
- {
- jstring key = ToJString(env, entry.first);
- jstring value = ToJString(env, entry.second);
+ return VectorToJObjectArray(
+ env, LogManager::GetInstance()->GetLogTypes(), IDCache::GetPairClass(),
+ [](JNIEnv* env_, const LogManager::LogContainer& log_container) {
+ jstring short_name = ToJString(env_, log_container.m_short_name);
+ jstring full_name = ToJString(env_, log_container.m_full_name);
- jobject result =
- env->CallObjectMethod(linked_hash_map, IDCache::GetLinkedHashMapPut(), key, value);
+ jobject pair = env_->NewObject(IDCache::GetPairClass(), IDCache::GetPairConstructor(),
+ short_name, full_name);
- env->DeleteLocalRef(key);
- env->DeleteLocalRef(value);
- env->DeleteLocalRef(result);
- }
- return linked_hash_map;
+ env_->DeleteLocalRef(short_name);
+ env_->DeleteLocalRef(full_name);
+
+ return pair;
+ });
}
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_ReloadLoggerConfig(JNIEnv*,