Commit Graph
44884 Commits
Author SHA1 Message Date
Martino Fontana c5d047480f GameINI: Disable Dual Core for Spider-Man: Web of Shadows 2025-11-08 23:09:41 +01: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 beb3e5eadb Merge pull request #14087 from Simonx22/android/editorconfig-kotlin-style
.editorconfig: Add Kotlin indentation rule
2025-11-08 14:00:37 -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
Simonx22 daa6188810 .editorconfig: Add Kotlin indentation rule
Keeps Kotlin formatting consistent with standard Kotlin style guides.
2025-11-08 12:12:09 -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
Simonx22andOatmealDome f67691d564 Config: Use maximum value of size_t instead of -1 as default value in ConfigChangedCallbackID
Co-authored-by: OatmealDome <[email protected]>
2025-11-08 11:35:31 -05:00
Simonx22andOatmealDome f9b167d8c6 DolphinAnalytics: Reload backend when config changes
Co-Authored-By: OatmealDome <[email protected]>
2025-11-08 11:35:30 -05:00
JosJuice 126bbcd72f Merge pull request #14053 from JoshuaVandaele/imgui-submodule
Externals: Make imgui a submodule
2025-11-08 15:03:06 +01: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
TellowKrinkle 143fac254e CMake: Allow both glslang 15 and 16 2025-11-08 02:32:47 -06: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
JMC47 2528feb98a Merge pull request #14072 from jordan-woyak/cmake-pre-3.25-fix
CMakeLists: Fix build on Linux with CMake versions less than 3.25.
2025-11-06 12:56:33 -05:00
Jordan Woyak a7df85a626 DolphinQt: Make disc ConvertDialog have a better minimum size, use QFormLayout, and clean up the code a bit. 2025-11-06 04:34:07 -06:00
Jordan Woyak 1e144a7cfd CMakeLists: Fix build on Linux with CMake versions less than 3.25. 2025-11-06 02:41:55 -06:00
iwubcode 2f20c12d82 VideoCommon: pass the EFB buffer scale into the FramebufferManager instead of pulling it from config, in the future this will allow us to have multiple framebuffers 2025-11-05 21:52:54 -06:00
Jordan Woyak ca6d8e1f0b InputCommon: Make ControllerInterface RegisterDevicesChangedCallback use Common::HookableEvent. 2025-11-05 17:12:56 -06:00
Jordan Woyak 28be9dc64f WindowsDevice: Remove GetDeviceProperty function in favor of the CfgMgr32 versions. SetupAPI seems to be no longer recommended. 2025-11-05 04:05:36 -06:00
Jordan Woyak 2fb1fdfb16 WiimoteReal/IOWin: Use Common::GetDeviceInterfaceList. 2025-11-05 04:05:36 -06:00
Jordan Woyak 2442626771 USBUtils: Replace GetDeviceNameUsingSetupAPI with GetDeviceNameUsingCfgMgr32. SetupAPI seems to be no longer recommended. 2025-11-05 04:05:36 -06:00
Jordan Woyak 5e65536376 WindowsDevice: Add GetDeviceInterfaceList function and NullTerminatedStringList template. 2025-11-04 22:51:26 -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 294044a02e Debugger: Ignore bctr when stepping out 2025-11-04 11:41:48 -05:00
JosJuice 947ed4aaf6 Merge pull request #14067 from VampireFlower/master
MainWindow: Change save state file filter to use *.s?? pattern
2025-11-04 16:48:51 +01:00
a99cb008db feat(profiles): add "open profiles folder" button + add dropdown button for profile actions
Co-Authored-By: iTrooz <[email protected]>
Co-Authored-By: Max Chateau <[email protected]>
Co-Authored-By: Damien R. <[email protected]>
2025-11-04 08:09:25 +01:00
Jordan Woyak 95701349b7 DolphinAnalytics: Use Config::Get instead of accessing g_Config. 2025-11-04 00:10:04 -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 WoyakandDentomologist f289b06e0d Common: Make HookableEvent use non-static data.
Co-authored-by: Dentomologist <[email protected]>
2025-11-02 17:30:43 -06:00