From ccb2a7cbeac56f2cc34ee9a8a5d347b9b41e6710 Mon Sep 17 00:00:00 2001
From: SachinVin <sachinvinayak2000@gmail.com>
Date: Mon, 1 May 2023 10:03:58 +0530
Subject: [PATCH] android: minor refactor disk shadercache

---
 .../DiskShaderCacheProgress.java              |  2 +-
 src/android/app/src/main/jni/id_cache.cpp     | 49 ++++++++-----------
 src/android/app/src/main/jni/id_cache.h       |  5 +-
 3 files changed, 24 insertions(+), 32 deletions(-)
 rename src/android/app/src/main/java/org/citra/citra_emu/{disk_shader_cache => utils}/DiskShaderCacheProgress.java (99%)

diff --git a/src/android/app/src/main/java/org/citra/citra_emu/disk_shader_cache/DiskShaderCacheProgress.java b/src/android/app/src/main/java/org/citra/citra_emu/utils/DiskShaderCacheProgress.java
similarity index 99%
rename from src/android/app/src/main/java/org/citra/citra_emu/disk_shader_cache/DiskShaderCacheProgress.java
rename to src/android/app/src/main/java/org/citra/citra_emu/utils/DiskShaderCacheProgress.java
index ceaacc12a..527875249 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/disk_shader_cache/DiskShaderCacheProgress.java
+++ b/src/android/app/src/main/java/org/citra/citra_emu/utils/DiskShaderCacheProgress.java
@@ -2,7 +2,7 @@
 // Licensed under GPLv2 or any later version
 // Refer to the license.txt file included.
 
-package org.citra.citra_emu.disk_shader_cache;
+package org.citra.citra_emu.utils;
 
 import android.app.Activity;
 import android.app.Dialog;
diff --git a/src/android/app/src/main/jni/id_cache.cpp b/src/android/app/src/main/jni/id_cache.cpp
index c34b01917..2ac6e5da9 100644
--- a/src/android/app/src/main/jni/id_cache.cpp
+++ b/src/android/app/src/main/jni/id_cache.cpp
@@ -21,8 +21,6 @@ static JavaVM* s_java_vm;
 
 static jclass s_core_error_class;
 static jclass s_savestate_info_class;
-static jclass s_disk_cache_progress_class;
-static jclass s_load_callback_stage_class;
 
 static jclass s_native_library_class;
 static jmethodID s_on_core_error;
@@ -34,7 +32,6 @@ static jmethodID s_landscape_screen_layout;
 static jmethodID s_exit_emulation_activity;
 static jmethodID s_request_camera_permission;
 static jmethodID s_request_mic_permission;
-static jmethodID s_disk_cache_load_progress;
 
 static jclass s_cheat_class;
 static jfieldID s_cheat_pointer;
@@ -44,6 +41,8 @@ static jfieldID s_cheat_engine_pointer;
 
 static jfieldID s_game_info_pointer;
 
+static jclass s_disk_cache_progress_class;
+static jmethodID s_disk_cache_load_progress;
 static std::unordered_map<VideoCore::LoadCallbackStage, jobject> s_java_load_callback_stages;
 
 namespace IDCache {
@@ -75,14 +74,6 @@ jclass GetSavestateInfoClass() {
     return s_savestate_info_class;
 }
 
-jclass GetDiskCacheProgressClass() {
-    return s_disk_cache_progress_class;
-}
-
-jclass GetDiskCacheLoadCallbackStageClass() {
-    return s_load_callback_stage_class;
-}
-
 jclass GetNativeLibraryClass() {
     return s_native_library_class;
 }
@@ -123,10 +114,6 @@ jmethodID GetRequestMicPermission() {
     return s_request_mic_permission;
 }
 
-jmethodID GetDiskCacheLoadProgress() {
-    return s_disk_cache_load_progress;
-}
-
 jclass GetCheatClass() {
     return s_cheat_class;
 }
@@ -147,6 +134,14 @@ jfieldID GetGameInfoPointer() {
     return s_game_info_pointer;
 }
 
+jclass GetDiskCacheProgressClass() {
+    return s_disk_cache_progress_class;
+}
+
+jmethodID GetDiskCacheLoadProgress() {
+    return s_disk_cache_load_progress;
+}
+
 jobject GetJavaLoadCallbackStage(VideoCore::LoadCallbackStage stage) {
     const auto it = s_java_load_callback_stages.find(stage);
     ASSERT_MSG(it != s_java_load_callback_stages.end(), "Invalid LoadCallbackStage: {}", stage);
@@ -178,10 +173,6 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved) {
         env->NewGlobalRef(env->FindClass("org/citra/citra_emu/NativeLibrary$SavestateInfo")));
     s_core_error_class = reinterpret_cast<jclass>(
         env->NewGlobalRef(env->FindClass("org/citra/citra_emu/NativeLibrary$CoreError")));
-    s_disk_cache_progress_class = reinterpret_cast<jclass>(env->NewGlobalRef(
-        env->FindClass("org/citra/citra_emu/disk_shader_cache/DiskShaderCacheProgress")));
-    s_load_callback_stage_class = reinterpret_cast<jclass>(env->NewGlobalRef(env->FindClass(
-        "org/citra/citra_emu/disk_shader_cache/DiskShaderCacheProgress$LoadCallbackStage")));
 
     // Initialize NativeLibrary
     const jclass native_library_class = env->FindClass("org/citra/citra_emu/NativeLibrary");
@@ -205,9 +196,6 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved) {
         env->GetStaticMethodID(s_native_library_class, "RequestCameraPermission", "()Z");
     s_request_mic_permission =
         env->GetStaticMethodID(s_native_library_class, "RequestMicPermission", "()Z");
-    s_disk_cache_load_progress = env->GetStaticMethodID(
-        s_disk_cache_progress_class, "loadProgress",
-        "(Lorg/citra/citra_emu/disk_shader_cache/DiskShaderCacheProgress$LoadCallbackStage;II)V");
     env->DeleteLocalRef(native_library_class);
 
     // Initialize Cheat
@@ -228,16 +216,22 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved) {
     s_game_info_pointer = env->GetFieldID(game_info_class, "mPointer", "J");
     env->DeleteLocalRef(game_info_class);
 
+    // Initialize Disk Shader Cache Progress Dialog
+    s_disk_cache_progress_class = reinterpret_cast<jclass>(env->NewGlobalRef(
+            env->FindClass("org/citra/citra_emu/utils/DiskShaderCacheProgress")));
+    jclass load_callback_stage_class = env->FindClass(
+            "org/citra/citra_emu/utils/DiskShaderCacheProgress$LoadCallbackStage");
+    s_disk_cache_load_progress = env->GetStaticMethodID(
+            s_disk_cache_progress_class, "loadProgress",
+            "(Lorg/citra/citra_emu/utils/DiskShaderCacheProgress$LoadCallbackStage;II)V");
     // Initialize LoadCallbackStage map
-    const auto to_java_load_callback_stage = [env](const std::string& stage) {
-        jclass load_callback_stage_class = IDCache::GetDiskCacheLoadCallbackStageClass();
+    const auto to_java_load_callback_stage = [env, load_callback_stage_class](const std::string& stage) {
         return env->NewGlobalRef(env->GetStaticObjectField(
             load_callback_stage_class,
             env->GetStaticFieldID(load_callback_stage_class, stage.c_str(),
-                                  "Lorg/citra/citra_emu/disk_shader_cache/"
+                                  "Lorg/citra/citra_emu/utils/"
                                   "DiskShaderCacheProgress$LoadCallbackStage;")));
     };
-
     s_java_load_callback_stages.emplace(VideoCore::LoadCallbackStage::Prepare,
                                         to_java_load_callback_stage("Prepare"));
     s_java_load_callback_stages.emplace(VideoCore::LoadCallbackStage::Decompile,
@@ -246,7 +240,7 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved) {
                                         to_java_load_callback_stage("Build"));
     s_java_load_callback_stages.emplace(VideoCore::LoadCallbackStage::Complete,
                                         to_java_load_callback_stage("Complete"));
-
+    env->DeleteLocalRef(load_callback_stage_class);
     MiiSelector::InitJNI(env);
     SoftwareKeyboard::InitJNI(env);
     Camera::StillImage::InitJNI(env);
@@ -264,7 +258,6 @@ void JNI_OnUnload(JavaVM* vm, void* reserved) {
     env->DeleteGlobalRef(s_savestate_info_class);
     env->DeleteGlobalRef(s_core_error_class);
     env->DeleteGlobalRef(s_disk_cache_progress_class);
-    env->DeleteGlobalRef(s_load_callback_stage_class);
     env->DeleteGlobalRef(s_native_library_class);
     env->DeleteGlobalRef(s_cheat_class);
 
diff --git a/src/android/app/src/main/jni/id_cache.h b/src/android/app/src/main/jni/id_cache.h
index e57496fae..62a9e066a 100644
--- a/src/android/app/src/main/jni/id_cache.h
+++ b/src/android/app/src/main/jni/id_cache.h
@@ -15,8 +15,6 @@ JNIEnv* GetEnvForThread();
 
 jclass GetCoreErrorClass();
 jclass GetSavestateInfoClass();
-jclass GetDiskCacheProgressClass();
-jclass GetDiskCacheLoadCallbackStageClass();
 
 jclass GetNativeLibraryClass();
 jmethodID GetOnCoreError();
@@ -28,7 +26,6 @@ jmethodID GetLandscapeScreenLayout();
 jmethodID GetExitEmulationActivity();
 jmethodID GetRequestCameraPermission();
 jmethodID GetRequestMicPermission();
-jmethodID GetDiskCacheLoadProgress();
 
 jclass GetCheatClass();
 jfieldID GetCheatPointer();
@@ -38,6 +35,8 @@ jfieldID GetCheatEnginePointer();
 
 jfieldID GetGameInfoPointer();
 
+jclass GetDiskCacheProgressClass();
+jmethodID GetDiskCacheLoadProgress();
 jobject GetJavaLoadCallbackStage(VideoCore::LoadCallbackStage stage);
 
 } // namespace IDCache