<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dolphin/Source/Android/jni/Config/NativeConfig.cpp, branch master</title>
<subtitle>GameCube and Wii emulator</subtitle>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/'/>
<entry>
<title>Explicitly transfer control of SYSCONF to emulated system</title>
<updated>2026-02-14T09:05:27+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2024-07-06T21:31:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=5440c7737fdc39b17656d437c25bf6cb9f369dbe'/>
<id>5440c7737fdc39b17656d437c25bf6cb9f369dbe</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add Achievements submenu to Android settings</title>
<updated>2025-11-17T03:05:53+00:00</updated>
<author>
<name>LillyJadeKatrin</name>
<email>lilly.kitty.1988@gmail.com</email>
</author>
<published>2025-04-24T11:51:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=b662cd93cec27540c15c3ab58bc9831863b9291b'/>
<id>b662cd93cec27540c15c3ab58bc9831863b9291b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Android: Remove HostThreadLocks that are no longer needed</title>
<updated>2023-11-25T13:06:29+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2023-11-25T12:43:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=5bda811a006e64e913c80c288a2171e6ca81b282'/>
<id>5bda811a006e64e913c80c288a2171e6ca81b282</id>
<content type='text'>
71ce8bb6f00f4d1cbc1012270d6daefdbda4254d got rid of the need to be the
host or CPU thread when writing to the config.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
71ce8bb6f00f4d1cbc1012270d6daefdbda4254d got rid of the need to be the
host or CPU thread when writing to the config.
</pre>
</div>
</content>
</entry>
<entry>
<title>Android: Add HostThreadLock where necessary</title>
<updated>2023-06-12T21:39:42+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2023-06-11T11:00:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=03f2f57edf7ac7340b25c4d603b721ab6910359c'/>
<id>03f2f57edf7ac7340b25c4d603b721ab6910359c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Android: Remove support for the old config system</title>
<updated>2023-03-11T16:51:59+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2023-03-11T16:48:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=68fd133057edc70fccf91c6757c5f1d929cc5ab0'/>
<id>68fd133057edc70fccf91c6757c5f1d929cc5ab0</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Migrate game INI profile setting to new config system</title>
<updated>2023-03-11T16:51:58+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2023-03-11T16:14:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=53e7090f5559106875ee5d1170a641439df66379'/>
<id>53e7090f5559106875ee5d1170a641439df66379</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Integrate "Ignore for this session" better with config system</title>
<updated>2022-09-24T11:03:45+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2022-09-24T11:03:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=04072f0ce63c64924695743cd83a028c06fe6be2'/>
<id>04072f0ce63c64924695743cd83a028c06fe6be2</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #10407 from JosJuice/android-reset-callback</title>
<updated>2022-02-26T16:24:18+00:00</updated>
<author>
<name>Mai M</name>
<email>mathew1800@gmail.com</email>
</author>
<published>2022-02-26T16:24:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=c474db93013ad41408aa0dc73b3d21a4c0881912'/>
<id>c474db93013ad41408aa0dc73b3d21a4c0881912</id>
<content type='text'>
Android: Call OnConfigChanged when resetting a setting</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Android: Call OnConfigChanged when resetting a setting</pre>
</div>
</content>
</entry>
<entry>
<title>Android: Get rid of LegacyIntSetting</title>
<updated>2022-02-18T21:17:39+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2022-02-18T20:58:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=1b76171a27063d4e75f8055f901379a47d899d5d'/>
<id>1b76171a27063d4e75f8055f901379a47d899d5d</id>
<content type='text'>
The only settings that were using LegacyIntSetting are now in the new
config system, so there's no reason to have LegacyIntSetting anymore.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The only settings that were using LegacyIntSetting are now in the new
config system, so there's no reason to have LegacyIntSetting anymore.
</pre>
</div>
</content>
</entry>
<entry>
<title>Android: Call OnConfigChanged when resetting a setting</title>
<updated>2022-01-29T14:49:03+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2022-01-29T14:48:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=7f32057e9184573d046bea4faef53dae42419943'/>
<id>7f32057e9184573d046bea4faef53dae42419943</id>
<content type='text'>
Otherwise the value of the setting won't be updated properly.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Otherwise the value of the setting won't be updated properly.
</pre>
</div>
</content>
</entry>
</feed>
