Commit Graph

37831 Commits

Author SHA1 Message Date
LillyJadeKatrin f4f26a26d2 Add login to achievement settings 2025-11-16 22:05:54 -05:00
LillyJadeKatrin 98678e9a8b AchievementManager - Add Android to user agent
If the build is an Android build, identify it as such in the AchievementManager user agent so that android builds can be tracked separately for debug purposes.
2025-11-16 22:05:53 -05:00
LillyJadeKatrin b662cd93ce Add Achievements submenu to Android settings 2025-11-16 22:05:53 -05:00
LillyJadeKatrin cff0ba76c1 Init achievement manager in Android startup 2025-11-08 20:31:23 -05:00
JosJuice f8cddf344d Android: Clear listener in SwitchSettingViewHolder
If bind was called more than once for a SwitchSettingViewHolder, the
line `binding.settingSwitch.isChecked = setting.isChecked` would
accidentally trigger the listener registered during the previous bind
call.
2025-11-08 20:31:22 -05:00
OatmealDome 4f849ec827 Merge pull request #14047 from Simonx22/reset-all-dolphin-settings-android
Android: Add Reset Dolphin Settings functionality
2025-11-08 14:03:44 -05:00
OatmealDome 5ee1ae43bb Merge pull request #14077 from Simonx22/android-alert-message-kotlin
Android: Convert AlertMessage dialog to Kotlin
2025-11-08 14:03:19 -05:00
OatmealDome 02ad041866 Merge pull request #14086 from Simonx22/android/use-native-analytics
Android: Use the shared HTTP analytics backend
2025-11-08 14:03:06 -05:00
OatmealDome a459dc0d25 Merge pull request #14082 from Simonx22/analytics/reload-on-setting-change
DolphinAnalytics: Reload backend when config changes
2025-11-08 14:00:03 -05:00
Simonx22 8ee767f292 Android: Convert AlertMessage dialog to Kotlin 2025-11-08 12:21:12 -05:00
Simonx22 82f658a28f Android: Use the shared HTTP analytics backend
We can now route Android analytics through Common::HttpAnalyticsBackend, drop the Volley sender, and keep the JNI layer limited to only transfer metadata since https://bugs.dolphin-emu.org/issues/11772 has been fixed.
2025-11-08 12:14:40 -05:00
JosJuice 958db7c78c Merge pull request #14020 from jordan-woyak/string-util-cleanups
StringUtil: Cleanups and add some character encoding conversion unit tests.
2025-11-08 17:36:54 +01:00
Simonx22 f67691d564 Config: Use maximum value of size_t instead of -1 as default value in ConfigChangedCallbackID
Co-authored-by: OatmealDome <julian@oatmealdome.me>
2025-11-08 11:35:31 -05:00
Simonx22 f9b167d8c6 DolphinAnalytics: Reload backend when config changes
Co-Authored-By: OatmealDome <julian@oatmealdome.me>
2025-11-08 11:35:30 -05:00
JosJuice ba14222a2b Merge pull request #13939 from Dentomologist/logging_avoid_overwriting_debug_verbosity_in_release_builds
Logging: Don't overwrite LDEBUG level in Release builds
2025-11-08 14:47:27 +01:00
JosJuice 9d27c145b9 Merge pull request #14076 from Simonx22/remove-action1-interface
Android: Replace Action1 helper with Kotlin lambda
2025-11-08 11:42:38 +01:00
Jordan Woyak 5af9bd5e46 Merge pull request #14074 from jordan-woyak/HookableEvent-no-strings
Common: Remove the string parameters from the HookableEvent interface.
2025-11-07 16:32:06 -06:00
Jordan Woyak 51cd0a676a Merge pull request #14079 from Dentomologist/use_asyncworkthread_pushblocking_instead_of_sync_event
CubebStream: Use WorkQueueThread::PushBlocking instead of sync_event
2025-11-07 16:31:46 -06:00
Dentomologist 3b97a7bded CubebStream: Use WorkQueueThread::PushBlocking instead of sync_event
Push and wait on WorkQueueThread items using PushBlocking. Previously we
created a Common::Event sync_event on the caller's stack, called Wait on
it, then had the WorkQueueThread call Set on the sync_event once the
thread was done.

In addition to being simpler the new way avoids a use-after-free that
could happen in convoluted and unlikely yet possible thread scheduling
sequences.

One such case can be triggered as follows:

* Set your audio backend to Cubeb
* In CubebStream::SetVolume set a breakpoint at the call to Wait and at
  the call to cubeb_stream_set_volume.
* Start a game.
* Continue until the Cubeb Worker thread hits the
  cubeb_stream_set_volume breakpoint and Emuthread hits the Wait
  breakpoint, freezing each thread when it hits its breakpoint.
* Unfreeze Cubeb Worker.
* In Event::Set set a breakpoint at the end of the scope containing the
  lock_guard such that the guard has been constructed but not destructed
  when the breakpoint is hit.
* Continue until that breakpoint is hit by Cubeb Worker. If other
  threads hit it first keep going.
* Freeze Cubeb Worker.
* For convenience remove the breakpoint in Event::Set so other threads
  don't trigger it.
* In CubebStream::SetRunning set a breakpoint at the call to Wait.
* Unfreeze Emuthread and continue until the breakpoint is hit.
* In Cubeb Worker go to Event::Set and examine the values of m_mutex's
  member variables. In Visual Studio Debug these are locking_thread_id
  == 0xcccccc01 and ownership_levels == 0xcccccccc. This is the result
  of Visual Studio overwriting the memory used on the stack by
  sync_event in CubebStream::SetVolume with cc bytes to represent
  uninitialized memory on the stack (since that function already
  returned), and then allocating enough memory on the stack when calling
  AudioCommon::SetSoundStreamRunning and then CubebStream::SetRunning
  that it overwrote one byte of the memory formerly occupied by
  locking_thread_id.
* If you unfreeze Cubeb Worker at this point it will trigger the lock
  guard's destructor which will then try to unlock m_mutex. Since
  m_mutex is no longer in scope this is a use-after-free, and in VS
  debug triggers a debug assert due to locking_thread_id not matching
  the current thread id.
2025-11-07 13:19:18 -08:00
Simonx22 ddbbb2ea4b Android: Replace Action1 helper with Kotlin lambda 2025-11-07 11:56:11 -05:00
JosJuice 5ed4823ebc Merge pull request #13858 from LillyJadeKatrin/retroachievements-message-adjustments
Retroachievements message adjustments
2025-11-07 16:50:48 +01:00
Jordan Woyak da6c65bf3b Common: Remove the string parameters from the HookableEvent interface. 2025-11-06 22:34:40 -06:00
Jordan Woyak 5650be6842 Merge pull request #14069 from jordan-woyak/ciface-hookable-event
InputCommon: Make ControllerInterface RegisterDevicesChangedCallback use Common::HookableEvent.
2025-11-06 20:06:53 -06:00
LillyJadeKatrin dd941bed70 Improve Achievements Window message
Special message on the Achievements window if the token is invalid/expired.
2025-11-06 20:44:08 -05:00
OatmealDome 852b7d85b2 Merge pull request #14062 from Simonx22/macos-design-fixes
macOS: UI fixes for dark mode
2025-11-06 20:20:05 -05:00
LillyJadeKatrin 1ad0a771d9 Delete Invalid RetroAchievements Tokens 2025-11-06 19:42:14 -05:00
LillyJadeKatrin b1f27b6cfd Added message for bad RetroAchievements token
Displays a different message at game launch if RetroAchievements fails specifically due to an invalid or expired API token, instructing the player to log back in with the game closed.
2025-11-06 19:30:22 -05:00
LillyJadeKatrin 4985a1e19b Adjusted mastery message
Wes from RetroAchievements requested a minor phrasing change to the mastery message.
2025-11-06 19:30:22 -05:00
Jordan Woyak 1e144a7cfd CMakeLists: Fix build on Linux with CMake versions less than 3.25. 2025-11-06 02:41:55 -06:00
Jordan Woyak ca6d8e1f0b InputCommon: Make ControllerInterface RegisterDevicesChangedCallback use Common::HookableEvent. 2025-11-05 17:12:56 -06:00
Simonx22 cd16ec02bd macOS: UI fixes for dark mode 2025-11-04 15:49:55 -05:00
Jordan Woyak 2170080f53 Merge pull request #14061 from jordan-woyak/config-info-spin-mutex
ConfigInfo: Cleanups and change mutex to a spin lock.
2025-11-04 14:09:35 -06:00
Jordan Woyak 7d617878e0 Merge pull request #13626 from jordan-woyak/non-global-hookable-event
Common: Make HookableEvent use non-static data.
2025-11-04 13:57:08 -06:00
VampireFlower 40fa9ddadd MainWindow: Change save state file filter to use *.s?? pattern 2025-11-03 18:50:56 -05:00
Jordan Woyak 999333c0a1 Config: Make ConfigInfo use Common::SpinLock to protect the CachedValue. These locks are nearly always uncontested and this makes Config::Get faster. 2025-11-02 20:45:55 -06:00
Jordan Woyak 46369ef1b1 Common: Add AtomicMutex and SpinMutex classes as faster alternatives to std::mutex. 2025-11-02 20:45:55 -06:00
Jordan Woyak fc9f25a418 Config/ConfigInfo: Cleanups. 2025-11-02 20:30:35 -06:00
Simonx22 f718a6b72f Android: Add Reset Dolphin Settings functionality 2025-11-02 20:09:23 -05:00
Jordan Woyak f289b06e0d Common: Make HookableEvent use non-static data.
Co-authored-by: Dentomologist <dentomologist@gmail.com>
2025-11-02 17:30:43 -06:00
iwubcode ef87af2985 VideoCommon: fix wrong path to glslang include 2025-11-02 14:29:14 -06:00
JMC47 a4a4416ff2 Merge pull request #14042 from iwubcode/bp_functions_global
VideoCommon: move global variables out of BPFunctions
2025-11-02 13:17:38 -05:00
JMC47 1d9c743ef7 Merge pull request #13975 from iwubcode/shader_includes
VideoBackends / VideoCommon: add support for specifying include files in shader code
2025-11-02 13:17:28 -05:00
Jordan Woyak 5650b2ef37 StringUtil: Replace strerror with Common::LastStrerrorString. 2025-11-02 00:36:04 -05:00
Jordan Woyak 0ebc54a0fa UnitTests: Add some StringUtil character encoding conversion tests. 2025-11-02 00:36:04 -05:00
Jordan Woyak da7c813edf StringUtil: Make non-Windows WStringToUTF8 implementation use iconv instead of deprecated std::codecvt features. 2025-11-02 00:36:04 -05:00
Jordan Woyak b073b5303b StringUtil: Fix many clang-tidy warnings. 2025-11-02 00:36:04 -05:00
Jordan Woyak 57d7485ea6 Core/IOS/FS: Clean up some hard to read NAND state saving logic. 2025-11-01 12:33:30 -05:00
JosJuice 249f999c6a Merge pull request #13655 from JosJuice/android-always-expand-sheets
Android: Expand bottom sheets on devices with touch too
2025-11-01 12:22:45 +01:00
JosJuice 35c5b51b62 Merge pull request #14048 from Simonx22/android-instant-settings-saving
Android: Save settings instantly after edits
2025-11-01 12:22:35 +01:00
JosJuice da1d45dbd4 Merge pull request #14057 from TellowKrinkle/VkRenderWrongLayout
VideoCommon: Fix render to texture in wrong layout
2025-11-01 10:06:41 +01:00