Jelajahi Sumber

android: jni: Ensure system is only initialized once.

- Fixes likelihood that fastmem allocation succeeds.
bunnei 3 tahun lalu
induk
melakukan
0276197744

+ 1 - 2
src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.java

@@ -185,8 +185,7 @@ public final class NativeLibrary {
 
 
     public static native boolean ReloadKeys();
     public static native boolean ReloadKeys();
 
 
-    // Create the config.ini file.
-    public static native void CreateConfigFile();
+    public static native void InitializeEmulation();
 
 
     public static native int DefaultCPUCore();
     public static native int DefaultCPUCore();
 
 

+ 1 - 1
src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DirectoryInitialization.java

@@ -27,7 +27,7 @@ public final class DirectoryInitialization {
 
 
         if (directoryState != DirectoryInitializationState.YUZU_DIRECTORIES_INITIALIZED) {
         if (directoryState != DirectoryInitializationState.YUZU_DIRECTORIES_INITIALIZED) {
             initializeInternalStorage(context);
             initializeInternalStorage(context);
-            NativeLibrary.CreateConfigFile();
+            NativeLibrary.InitializeEmulation();
             directoryState = DirectoryInitializationState.YUZU_DIRECTORIES_INITIALIZED;
             directoryState = DirectoryInitializationState.YUZU_DIRECTORIES_INITIALIZED;
         }
         }
 
 

+ 4 - 3
src/android/app/src/main/jni/native.cpp

@@ -40,7 +40,6 @@ namespace {
 class EmulationSession final {
 class EmulationSession final {
 public:
 public:
     EmulationSession() {
     EmulationSession() {
-        m_system.Initialize();
         m_vfs = std::make_shared<FileSys::RealVfsFilesystem>();
         m_vfs = std::make_shared<FileSys::RealVfsFilesystem>();
     }
     }
 
 
@@ -126,7 +125,6 @@ public:
 
 
         // Initialize system.
         // Initialize system.
         m_system.SetShuttingDown(false);
         m_system.SetShuttingDown(false);
-        m_system.Initialize();
         m_system.ApplySettings();
         m_system.ApplySettings();
         m_system.HIDCore().ReloadInputDevices();
         m_system.HIDCore().ReloadInputDevices();
         m_system.SetContentProvider(std::make_unique<FileSys::ContentProviderUnion>());
         m_system.SetContentProvider(std::make_unique<FileSys::ContentProviderUnion>());
@@ -498,9 +496,12 @@ jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_GetGitRevision([[maybe_unused]] JN
     return {};
     return {};
 }
 }
 
 
-void Java_org_yuzu_yuzu_1emu_NativeLibrary_CreateConfigFile
+void Java_org_yuzu_yuzu_1emu_NativeLibrary_InitializeEmulation
     [[maybe_unused]] (JNIEnv* env, [[maybe_unused]] jclass clazz) {
     [[maybe_unused]] (JNIEnv* env, [[maybe_unused]] jclass clazz) {
+    // Create the default config.ini.
     Config{};
     Config{};
+    // Initialize the emulated system.
+    EmulationSession::GetInstance().System().Initialize();
 }
 }
 
 
 jint Java_org_yuzu_yuzu_1emu_NativeLibrary_DefaultCPUCore([[maybe_unused]] JNIEnv* env,
 jint Java_org_yuzu_yuzu_1emu_NativeLibrary_DefaultCPUCore([[maybe_unused]] JNIEnv* env,

+ 2 - 2
src/android/app/src/main/jni/native.h

@@ -86,8 +86,8 @@ JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_SetSysDirectory(JNI
                                                                              jclass clazz,
                                                                              jclass clazz,
                                                                              jstring path);
                                                                              jstring path);
 
 
-JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_CreateConfigFile(JNIEnv* env,
-                                                                              jclass clazz);
+JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_InitializeEmulation(JNIEnv* env,
+                                                                                 jclass clazz);
 
 
 JNIEXPORT jint JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_DefaultCPUCore(JNIEnv* env,
 JNIEXPORT jint JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_DefaultCPUCore(JNIEnv* env,
                                                                             jclass clazz);
                                                                             jclass clazz);