summaryrefslogtreecommitdiff
path: root/Source/Android/jni/Config/NativeConfig.cpp
AgeCommit message (Collapse)Author
2026-02-14Explicitly transfer control of SYSCONF to emulated systemJosJuice
The functions SaveToSYSCONF and LoadFromSYSCONF contain checks for whether emulation is running. The intent of this is that when we're emulating a Wii, the emulated system may write to SYSCONF whenever it likes and does not expect anything else to write to SYSCONF, so the host code shouldn't access SYSCONF while emulation is ongoing. However, Core::IsRunning is an imperfect proxy for whether we've handed over control of SYSCONF to the emulated system yet, as the actual handover happens at a slightly different point in time than when the emulation state is changed. This usually isn't a problem, but in theory it could be a determinism problem if a setting is changed right as emulation is starting, or it could cause the emulated software to briefly misbehave if a setting is changed right as emulation is stopping. Things got worse in 72cf2bdb87f09deff22e1085de3290126aa4ad05 when I replaced the Core::IsRunning calls with !Core::IsUninitialized. With IsRunning, there was be a period of time where SYSCONF should have been protected but wasn't. With !IsUninitialized, there was a period of time where SYSCONF shouldn't have been protected but was, and crucially, this period of time included the moments where we do setup and teardown of the emulated NAND, which broke transferring SYSCONF settings between the host and the guest. 72cf2bdb87f09deff22e1085de3290126aa4ad05 was reverted because of this. This commit adds a flag that we explicitly flip when control is handed over to or from the emulated system. This protects the SYSCONF file for exactly as long as is needed.
2025-11-16Add Achievements submenu to Android settingsLillyJadeKatrin
2023-11-25Android: Remove HostThreadLocks that are no longer neededJosJuice
71ce8bb6f00f4d1cbc1012270d6daefdbda4254d got rid of the need to be the host or CPU thread when writing to the config.
2023-06-12Android: Add HostThreadLock where necessaryJosJuice
2023-03-11Android: Remove support for the old config systemJosJuice
All settings that we care about from an Android perspective are now supported by the new config system, so we can remove all the Android code for the old config system. This should have no impact on users.
2023-03-11Migrate game INI profile setting to new config systemJosJuice
2022-09-24Integrate "Ignore for this session" better with config systemJosJuice
Because of the previous commit, this is needed to stop DolphinQt from forgetting that the user pressed ignore whenever any part of the config is changed. This commit also changes the behavior a bit on DolphinQt: "Ignore for this session" now applies to the current emulation session instead of the current Dolphin launch. This matches how it already worked on Android, and is in my opinion better because it means the user won't lose out on important panic alerts in a game becase they played another game first that had repeated panic alerts that they wanted to ignore. For Android, this commit isn't necessary, but it makes the code cleaner.
2022-02-26Merge pull request #10407 from JosJuice/android-reset-callbackMai M
Android: Call OnConfigChanged when resetting a setting
2022-02-18Android: Get rid of LegacyIntSettingJosJuice
The only settings that were using LegacyIntSetting are now in the new config system, so there's no reason to have LegacyIntSetting anymore.
2022-01-29Android: Call OnConfigChanged when resetting a settingJosJuice
Otherwise the value of the setting won't be updated properly.
2021-07-05treewide: convert GPLv2+ license info to SPDX tagsPierre Bourdon
SPDX standardizes how source code conveys its copyright and licensing information. See https://spdx.github.io/spdx-spec/1-rationale/ . SPDX tags are adopted in many large projects, including things like the Linux kernel.
2021-05-20Android: Use JNI for getting post-processsing shadersJosJuice
The Java implementation of getting the list of post-processing shaders only looked in the Sys folder and not the User folder. This could be fixed in the Java implementation, but it's simpler to just call the C++ implementation instead.