mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-05-02 17:28:33 +00:00
Use UICommon's game list code on Android
Deduplicates code, and gets rid of some problems the old code had (such as: bad performance when calling native functions, only one disc showing up for multi-disc games, Wii banners being low-res, unnecessarily much effort being needed for adding more metadata).
This commit is contained in:
parent
daee5a4b43
commit
1c027bc148
43 changed files with 976 additions and 1574 deletions
110
Source/Android/jni/AndroidCommon/IDCache.cpp
Normal file
110
Source/Android/jni/AndroidCommon/IDCache.cpp
Normal file
|
@ -0,0 +1,110 @@
|
|||
// Copyright 2018 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "jni/AndroidCommon/IDCache.h"
|
||||
|
||||
#include <jni.h>
|
||||
|
||||
static constexpr jint JNI_VERSION = JNI_VERSION_1_6;
|
||||
|
||||
static JavaVM* s_java_vm;
|
||||
|
||||
static jclass s_native_library_class;
|
||||
static jmethodID s_display_alert_msg;
|
||||
|
||||
static jclass s_game_file_class;
|
||||
static jfieldID s_game_file_pointer;
|
||||
static jmethodID s_game_file_constructor;
|
||||
|
||||
static jclass s_game_file_cache_class;
|
||||
static jfieldID s_game_file_cache_pointer;
|
||||
|
||||
namespace IDCache
|
||||
{
|
||||
JavaVM* GetJavaVM()
|
||||
{
|
||||
return s_java_vm;
|
||||
}
|
||||
|
||||
jclass GetNativeLibraryClass()
|
||||
{
|
||||
return s_native_library_class;
|
||||
}
|
||||
|
||||
jmethodID GetDisplayAlertMsg()
|
||||
{
|
||||
return s_display_alert_msg;
|
||||
}
|
||||
|
||||
jclass GetGameFileClass()
|
||||
{
|
||||
return s_game_file_class;
|
||||
}
|
||||
|
||||
jfieldID GetGameFilePointer()
|
||||
{
|
||||
return s_game_file_pointer;
|
||||
}
|
||||
|
||||
jmethodID GetGameFileConstructor()
|
||||
{
|
||||
return s_game_file_constructor;
|
||||
}
|
||||
|
||||
jclass GetGameFileCacheClass()
|
||||
{
|
||||
return s_game_file_cache_class;
|
||||
}
|
||||
|
||||
jfieldID GetGameFileCachePointer()
|
||||
{
|
||||
return s_game_file_cache_pointer;
|
||||
}
|
||||
|
||||
} // namespace IDCache
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
jint JNI_OnLoad(JavaVM* vm, void* reserved)
|
||||
{
|
||||
s_java_vm = vm;
|
||||
|
||||
JNIEnv* env;
|
||||
if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION) != JNI_OK)
|
||||
return JNI_ERR;
|
||||
|
||||
const jclass native_library_class = env->FindClass("org/dolphinemu/dolphinemu/NativeLibrary");
|
||||
s_native_library_class = reinterpret_cast<jclass>(env->NewGlobalRef(native_library_class));
|
||||
s_display_alert_msg = env->GetStaticMethodID(s_native_library_class, "displayAlertMsg",
|
||||
"(Ljava/lang/String;Ljava/lang/String;Z)Z");
|
||||
|
||||
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");
|
||||
|
||||
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");
|
||||
|
||||
return JNI_VERSION;
|
||||
}
|
||||
|
||||
void JNI_OnUnload(JavaVM* vm, void* reserved)
|
||||
{
|
||||
JNIEnv* env;
|
||||
if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION) != JNI_OK)
|
||||
return;
|
||||
|
||||
env->DeleteGlobalRef(s_native_library_class);
|
||||
env->DeleteGlobalRef(s_game_file_class);
|
||||
env->DeleteGlobalRef(s_game_file_cache_class);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue