Jelajahi Sumber

android: Run OnEmulationStarted frontend callback in another thread

The JVM has problems with attaching to a Fiber so we start a new thread and wait for the result here.
t895 2 tahun lalu
induk
melakukan
2600ac65c8
1 mengubah file dengan 3 tambahan dan 1 penghapusan
  1. 3 1
      src/android/app/src/main/jni/emu_window/emu_window.cpp

+ 3 - 1
src/android/app/src/main/jni/emu_window/emu_window.cpp

@@ -3,6 +3,7 @@
 
 
 #include <android/native_window_jni.h>
 #include <android/native_window_jni.h>
 
 
+#include "common/android/id_cache.h"
 #include "common/logging/log.h"
 #include "common/logging/log.h"
 #include "input_common/drivers/touch_screen.h"
 #include "input_common/drivers/touch_screen.h"
 #include "input_common/drivers/virtual_amiibo.h"
 #include "input_common/drivers/virtual_amiibo.h"
@@ -60,7 +61,8 @@ void EmuWindow_Android::OnRemoveNfcTag() {
 
 
 void EmuWindow_Android::OnFrameDisplayed() {
 void EmuWindow_Android::OnFrameDisplayed() {
     if (!m_first_frame) {
     if (!m_first_frame) {
-        EmulationSession::GetInstance().OnEmulationStarted();
+        Common::Android::RunJNIOnFiber<void>(
+            [&](JNIEnv* env) { EmulationSession::GetInstance().OnEmulationStarted(); });
         m_first_frame = true;
         m_first_frame = true;
     }
     }
 }
 }