Commit Graph

14867 Commits

Author SHA1 Message Date
Simonx22
bd93c09e38 CPUThreadConfigCallback: Use maximum value of size_t instead of -1 as default value ConfigChangedCallbackID
Co-Authored-By: OatmealDome <OatmealDome@users.noreply.github.com>
2025-11-08 23:23:33 -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
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
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
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
Jordan Woyak
da6c65bf3b Common: Remove the string parameters from the HookableEvent interface. 2025-11-06 22:34:40 -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
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
f289b06e0d Common: Make HookableEvent use non-static data.
Co-authored-by: Dentomologist <dentomologist@gmail.com>
2025-11-02 17:30:43 -06: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
91fd53a98c
Merge pull request #14035 from Dentomologist/pauseandlock_refactoring
PauseAndLock Refactoring
2025-11-01 10:06:08 +01:00
JosJuice
998a3577ce
Merge pull request #14054 from Dentomologist/libmgba_fix_build_when_disabled
libmgba: Fix build when disabled
2025-11-01 10:01:48 +01:00
Sepalani
ba8f4ca6a2 IP/Top: Make InetAToN async 2025-10-31 01:13:36 +04:00
Dentomologist
2836dd2b5e libmgba: Fix build when disabled 2025-10-30 12:00:13 -07:00
Dentomologist
32a8128b53 AchievementManager: Fix unused private field warnings
Remove several unused members from AchievementManager.

These became unused in https://github.com/dolphin-emu/dolphin/pull/12639
which switched from the rcheevos rc_runtime interface to rc_client.
2025-10-29 16:50:00 -07:00
JMC47
b920182c97
Merge pull request #13870 from cristian64/broadband_adapter_ipc
Core/HW: Add Broadband Adapter (IPC).
2025-10-28 19:16:17 -04:00
JMC47
1ed86e1b16
Merge pull request #13866 from JoshuaVandaele/reset-button-third-attempt
AdvancedPane: Add a button to restore default settings
2025-10-28 18:56:03 -04:00
cristian64
f5012ef457 Core/HW: Add Broadband Adapter (IPC).
This is a hassle-free BBA option intended for local play with multiple
Dolphin instances running *in the same system*. After selecting
**Broadband Adapter (IPC)** in the **SP1** slot in the GameCube section
in the settings, games that support LAN play will be able to discover
each other, without requiring third-party software or relatively complex
TAP setups.

The implementation is based on cpp-ipc, a high-performance inter-process
communication library that uses shared memory as transport layer.

Supported platforms are:

- [x] Linux
- [x] Windows
- [ ] macOS (cpp-ipc does not support this platform)
- [ ] FreeBSD (cpp-ipc does not support this platform)
- [ ] Android (cpp-ipc needs some adjustments; while it could work,
  launching two Dolphin instances within the same Android system may be
  both challenging and impractical)
2025-10-28 18:50:59 +00:00
Joshua Vandaële
33fd06d7f3
AdvancedPane: Add a button to restore default settings 2025-10-27 15:59:33 +01:00
Jordan Woyak
c69f868fff Core/HW: Remove RoundingModeUpdated call from CPUManager::Run. This is now properly handled on initialization. 2025-10-26 23:07:14 -05:00
Jordan Woyak
700abd68e3 VideoCommon/AsyncRequests: Remove now unnecessary SetEnable function. Requests are now always enabled. Call SetPassthrough on initialization to not be racy. 2025-10-26 23:07:14 -05:00
Jordan Woyak
6416b0a6ec Core: Make EmuThread spawn the Video thread and become the CPU thread in dual-core mode instead of the other way around. 2025-10-26 23:07:14 -05:00
Dentomologist
70d8bc6fd7 CPU: Update PauseAndLock comment 2025-10-26 18:06:38 -07:00
Dentomologist
c47db6dba7 DSPEmulator: Remove redundant parameter and code
PauseAndLock is only called with do_lock=true, so remove the parameter
and modify PauseAndLock accordingly.
2025-10-26 18:03:31 -07:00
Dentomologist
d5f079d78b DSPEmulator: Extract UnpauseAndUnlock from PauseAndLock
Replace call to PauseAndLock(do_lock=false) with new function
UnpauseAndUnlock.
2025-10-26 18:03:06 -07:00
Dentomologist
933071dd57 FifoManager: Remove redundant PauseAndLock parameters
PauseAndLock was only called with do_lock=true, and the function only
used unpauseOnUnlock when do_lock was false.
2025-10-26 18:01:51 -07:00
Dentomologist
f628a979c4 Core: Remove pointless call to FifoManager::PauseAndLock
FifoManager::PauseAndLock doesn't do anything when doLock and
unpauseOnUnlock are both false, so remove the call.
2025-10-26 18:01:51 -07:00
Dentomologist
2d888ea4d3 Core: Remove unnecessary PauseAndLock parameters
PauseAndLock is now only called with do_lock=true, and unpause_on_unlock
only ever was used when do_lock is false (which is now handled in
RestoreStateAndUnlock instead), so both parameters are unnecessary.
2025-10-26 18:01:51 -07:00
Dentomologist
c9c8461d36 Core: Extract RestoreStateAndUnlock from PauseAndLock
Replace calls of PauseAndLock(do_lock=false) with new function
RestoreStateAndUnlock for clarity.

Callers of PauseAndLock ignored the return value when do_lock is
false, so RestoreStateAndUnlock doesn't need to return anything.
2025-10-26 18:01:23 -07:00
Dentomologist
4e64d8e94f CPUManager: Remove redundant parameter from RestoreStateAndUnlock
RestoreStateAndUnlock was only called with control_adjacent=true. Remove
the parameter and unconditionally call the function that was gated
behind it being true.
2025-10-26 17:59:47 -07:00
Dentomologist
8d0dbb0ef6 CPUManager: Remove redundant parameter from PauseAndLock
PauseAndLock was only called with control_adjacent=false. Remove the
parameter and the function call that was only made when it was true.
2025-10-26 17:56:31 -07:00
Dentomologist
48d48fe1af CPUManager: Remove unnecessary PauseAndLock parameters
CPUManager::PauseAndLock is now only called with do_lock=true, and
unpause_on_unlock only ever was used when do_lock is false (which is now
handled in RestoreStateAndUnlock instead), so both parameters are
unnecessary.
2025-10-26 17:54:41 -07:00
Dentomologist
1a6e285685 CPU: Remove default arguments for PauseAndLock
For clarity in the next commit.
2025-10-26 17:54:41 -07:00
Dentomologist
691743fbc4 CPU: Extract RestoreStateAndUnlock from PauseAndLock
Replace call of CPUManager::PauseAndLock(do_lock=false) with new
function RestoreStateAndUnlock for clarity.

Callers of Core::PauseAndLock ignore the return value when do_lock is
false, so in that case was_unpaused in Core::PauseAndLock doesn't need
to be set and so RestoreStateAndUnlock doesn't need to return anything.
2025-10-26 17:54:41 -07:00
Dentomologist
bebeba29c3 CPU: Convert static variable to class member
Make s_have_fake_cpu_thread a class member instead. In addition to
getting rid of a bit of static state, this simplifies refactoring in an
upcoming commit.
2025-10-26 17:53:45 -07:00
Jordan Woyak
7608dbbfbd Core: Remove GDBStub::Deinit call from EmuThread. The CpuThread function is already doing this. 2025-10-26 16:53:52 -05:00
Martino Fontana
fe63d95e02 GameINI: Add patches to limit FPS for some uncapped games 2025-10-23 00:38:14 +02:00
Martino Fontana
2542c79d6b GameINI: Add patches for idle loop detection (speed hack) 2025-10-23 00:03:59 +02:00
Martino Fontana
d423eb5a75 GameINI: Fix Egg Mania Japanese "Force Progressive" hack 2025-10-22 23:32:18 +02:00
JMC47
be131ddc59
Merge pull request #13984 from jordan-woyak/wmreal-quick-connect-and-disconnect
WiimoteReal: Quickly connect and disconnect Wii remotes with hidapi / Android.
2025-10-21 19:49:22 -04:00
Jordan Woyak
26c5b2f57a WiimoteReal/IOLinux: Fix warning. 2025-10-21 14:51:54 -05:00
Jordan Woyak
590b94975d WiimoteReal: Make WiimoteScannerBackend classes use separate FindNewWiimotes and FindAttachedWiimotes functions.
Return results as vector of unique_ptr instead of raw pointers.
2025-10-19 22:36:39 -05:00
Jordan Woyak
99cc5e7bb7 WiimoteReal/IOAndroid: Only "find" DolphinBar remotes which are actually connected. 2025-10-19 22:36:39 -05:00