Browse Source

[android] avoid crash upon leaving settings while emulationsession is running

xbzk/reloadinputdevices-isrunning-m_mutex-guard
xbzk 4 weeks ago
parent
commit
be89eed7ad
  1. 20
      src/android/app/src/main/jni/native.cpp
  2. 2
      src/android/app/src/main/jni/native.h
  3. 2
      src/android/app/src/main/jni/native_input.cpp

20
src/android/app/src/main/jni/native.cpp

@ -381,6 +381,23 @@ void EmulationSession::HaltEmulation() {
m_cv.notify_one();
}
void EmulationSession::ReloadInputDevices() {
std::scoped_lock lock(m_mutex);
if (!m_is_running) {
return;
}
m_system.HIDCore().ReloadInputDevices();
}
void EmulationSession::ApplySettings() {
std::scoped_lock lock(m_mutex);
if (!m_is_running) {
return;
}
m_system.ApplySettings();
m_system.HIDCore().ReloadInputDevices();
}
void EmulationSession::RunEmulation() {
{
std::scoped_lock lock(m_mutex);
@ -1165,8 +1182,7 @@ jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getGpuModel(JNIEnv* env, jobject j
}
void Java_org_yuzu_yuzu_1emu_NativeLibrary_applySettings(JNIEnv* env, jobject jobj) {
EmulationSession::GetInstance().System().ApplySettings();
EmulationSession::GetInstance().System().HIDCore().ReloadInputDevices();
EmulationSession::GetInstance().ApplySettings();
}
void Java_org_yuzu_yuzu_1emu_NativeLibrary_logSettings(JNIEnv* env, jobject jobj) {

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

@ -45,6 +45,8 @@ public:
void HaltEmulation();
void RunEmulation();
void ShutdownEmulation();
void ReloadInputDevices();
void ApplySettings();
const Core::PerfStatsResults& PerfStats();
int ShadersBuilding();

2
src/android/app/src/main/jni/native_input.cpp

@ -282,7 +282,7 @@ void Java_org_yuzu_yuzu_1emu_features_input_NativeInput_onDeviceMotionEvent(
void Java_org_yuzu_yuzu_1emu_features_input_NativeInput_reloadInputDevices(JNIEnv* env,
jobject j_obj) {
EmulationSession::GetInstance().System().HIDCore().ReloadInputDevices();
EmulationSession::GetInstance().ReloadInputDevices();
}
void Java_org_yuzu_yuzu_1emu_features_input_NativeInput_registerController(JNIEnv* env,

Loading…
Cancel
Save