From 0fb46529e1eae087ea9fea9c3bca062af8410850 Mon Sep 17 00:00:00 2001 From: BreadFish64 Date: Tue, 17 Mar 2020 14:36:57 -0500 Subject: [PATCH] android: allow changing settings while game is running --- .../src/main/java/org/citra/citra_emu/NativeLibrary.java | 2 ++ .../org/citra/citra_emu/activities/EmulationActivity.java | 7 +++++++ .../citra_emu/ui/settings/SettingsActivityPresenter.java | 2 ++ src/android/app/src/main/jni/native.cpp | 5 +++++ src/android/app/src/main/jni/native.h | 3 +++ src/android/app/src/main/res/menu/menu_emulation.xml | 7 ++++++- src/android/app/src/main/res/values/strings.xml | 1 + 7 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/android/app/src/main/java/org/citra/citra_emu/NativeLibrary.java b/src/android/app/src/main/java/org/citra/citra_emu/NativeLibrary.java index df4e5c5af..0371486d3 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/NativeLibrary.java +++ b/src/android/app/src/main/java/org/citra/citra_emu/NativeLibrary.java @@ -100,6 +100,8 @@ public final class NativeLibrary { */ public static native void onTouchMoved(float x_axis, float y_axis); + public static native void ReloadSettings(); + public static native String GetUserSetting(String gameID, String Section, String Key); public static native void SetUserSetting(String gameID, String Section, String Key, String Value); diff --git a/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.java b/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.java index a67772336..b88dd3bf2 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.java +++ b/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.java @@ -38,9 +38,11 @@ import org.citra.citra_emu.fragments.EmulationFragment; import org.citra.citra_emu.fragments.MenuFragment; import org.citra.citra_emu.model.settings.view.InputBindingSetting; import org.citra.citra_emu.ui.main.MainPresenter; +import org.citra.citra_emu.ui.settings.SettingsActivity; import org.citra.citra_emu.utils.Animations; import org.citra.citra_emu.utils.ControllerMappingHelper; import org.citra.citra_emu.utils.EmulationMenuSettings; +import org.citra.citra_emu.utils.SettingsFile; import java.lang.annotation.Retention; import java.util.List; @@ -64,6 +66,7 @@ public final class EmulationActivity extends AppCompatActivity { public static final int MENU_ACTION_SWAP_SCREENS = 9; public static final int MENU_ACTION_RESET_OVERLAY = 10; public static final int MENU_ACTION_SHOW_OVERLAY = 11; + public static final int MENU_ACTION_OPEN_SETTINGS = 12; private static final int EMULATION_RUNNING_NOTIFICATION = 0x1000; private static final String BACKSTACK_NAME_MENU = "menu"; @@ -482,6 +485,10 @@ public final class EmulationActivity extends AppCompatActivity { mEmulationFragment.stopEmulation(); exitWithAnimation(); break; + + case MENU_ACTION_OPEN_SETTINGS: + SettingsActivity.launch(this, SettingsFile.FILE_NAME_CONFIG,""); + break; } return true; diff --git a/src/android/app/src/main/java/org/citra/citra_emu/ui/settings/SettingsActivityPresenter.java b/src/android/app/src/main/java/org/citra/citra_emu/ui/settings/SettingsActivityPresenter.java index 65664e844..b4df11354 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/ui/settings/SettingsActivityPresenter.java +++ b/src/android/app/src/main/java/org/citra/citra_emu/ui/settings/SettingsActivityPresenter.java @@ -4,6 +4,7 @@ import android.content.IntentFilter; import android.os.Bundle; import android.text.TextUtils; +import org.citra.citra_emu.NativeLibrary; import org.citra.citra_emu.model.settings.SettingSection; import org.citra.citra_emu.services.DirectoryInitializationService; import org.citra.citra_emu.services.DirectoryInitializationService.DirectoryInitializationState; @@ -119,6 +120,7 @@ public final class SettingsActivityPresenter { SettingsFile.saveFile(SettingsFile.FILE_NAME_CONFIG, mSettings.get(SettingsFile.SETTINGS_DOLPHIN), mView); mView.showToastMessage("Saved settings", false); } + NativeLibrary.ReloadSettings(); } } diff --git a/src/android/app/src/main/jni/native.cpp b/src/android/app/src/main/jni/native.cpp index 81589138f..2dd5ac4be 100644 --- a/src/android/app/src/main/jni/native.cpp +++ b/src/android/app/src/main/jni/native.cpp @@ -395,6 +395,11 @@ void Java_org_citra_citra_1emu_NativeLibrary_WriteProfileResults(JNIEnv* env, jo void Java_org_citra_citra_1emu_NativeLibrary_Run__Ljava_lang_String_2Ljava_lang_String_2Z( JNIEnv* env, jobject obj, jstring jFile, jstring jSavestate, jboolean jDeleteSavestate) {} +void Java_org_citra_citra_1emu_NativeLibrary_ReloadSettings(JNIEnv* env, jclass type) { + Config{}; + Settings::Apply(); +} + jstring Java_org_citra_citra_1emu_NativeLibrary_GetUserSetting(JNIEnv* env, jclass type, jstring gameID_, jstring Section_, jstring Key_) { diff --git a/src/android/app/src/main/jni/native.h b/src/android/app/src/main/jni/native.h index ea46c6219..067517a51 100644 --- a/src/android/app/src/main/jni/native.h +++ b/src/android/app/src/main/jni/native.h @@ -159,6 +159,9 @@ JNIEXPORT void JNICALL Java_org_citra_citra_1emu_NativeLibrary_InitGameIni(JNIEn jclass type, jstring gameID_); +JNIEXPORT void JNICALL Java_org_citra_citra_1emu_NativeLibrary_ReloadSettings(JNIEnv* env, + jclass type); + JNIEXPORT void JNICALL Java_org_citra_citra_1emu_NativeLibrary_SetUserSetting( JNIEnv* env, jclass type, jstring gameID_, jstring Section_, jstring Key_, jstring Value_); diff --git a/src/android/app/src/main/res/menu/menu_emulation.xml b/src/android/app/src/main/res/menu/menu_emulation.xml index efabf1d49..e58a7ce54 100644 --- a/src/android/app/src/main/res/menu/menu_emulation.xml +++ b/src/android/app/src/main/res/menu/menu_emulation.xml @@ -68,4 +68,9 @@ android:title="@string/emulation_show_overlay" android:checkable="true"/> - \ No newline at end of file + + + diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 9934e7048..e03b52b27 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -119,6 +119,7 @@ Adjust Scale Choose Controller You may have to reload the game after changing extensions. + Open Settings Landscape Screen Layout Default Portrait