<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dolphin/Source/Core/InputCommon/ControllerInterface, branch 2509</title>
<subtitle>GameCube and Wii emulator</subtitle>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/'/>
<entry>
<title>Merge pull request #13781 from Dentomologist/controllerinterface_fix_windows_deadlock</title>
<updated>2025-07-30T19:49:23+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2025-07-30T19:49:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=62bc93473fe4457d9cf9a7016fc9fb14a5159729'/>
<id>62bc93473fe4457d9cf9a7016fc9fb14a5159729</id>
<content type='text'>
ControllerInterface: Fix Windows deadlock</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
ControllerInterface: Fix Windows deadlock</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #13674 from JosJuice/android-visualize-input</title>
<updated>2025-07-20T22:46:47+00:00</updated>
<author>
<name>Jordan Woyak</name>
<email>jordan.woyak@gmail.com</email>
</author>
<published>2025-07-20T22:46:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=c39c8277b7fd570a4101bc621a9179f3ece10e6b'/>
<id>c39c8277b7fd570a4101bc621a9179f3ece10e6b</id>
<content type='text'>
Android: Show input indicators in controller settings</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Android: Show input indicators in controller settings</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #13775 from jordan-woyak/sdl-gamepad-rename</title>
<updated>2025-07-12T21:50:04+00:00</updated>
<author>
<name>Jordan Woyak</name>
<email>jordan.woyak@gmail.com</email>
</author>
<published>2025-07-12T21:50:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=633fd5df70788c50e8cec403e330f3f2aca2d97e'/>
<id>633fd5df70788c50e8cec403e330f3f2aca2d97e</id>
<content type='text'>
InputCommon: Rename SDL input backend GameController to Gamepad.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
InputCommon: Rename SDL input backend GameController to Gamepad.</pre>
</div>
</content>
</entry>
<entry>
<title>Fix various warnings</title>
<updated>2025-07-12T10:47:30+00:00</updated>
<author>
<name>Joshua Vandaële</name>
<email>joshua@vandaele.software</email>
</author>
<published>2025-06-09T13:30:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=06882bd2dca4ea92d0608077c45cff6cb7e41583'/>
<id>06882bd2dca4ea92d0608077c45cff6cb7e41583</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ControllerInterface: Fix Windows deadlock</title>
<updated>2025-06-28T21:00:27+00:00</updated>
<author>
<name>Dentomologist</name>
<email>dentomologist@gmail.com</email>
</author>
<published>2025-06-28T19:33:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=c613d3ca109a437e5001aa86c7839f494345818f'/>
<id>c613d3ca109a437e5001aa86c7839f494345818f</id>
<content type='text'>
Remove the redundant s_populate_mutex and only use
ControllerInterface::m_devices_population_mutex instead to prevent a
deadlock caused by locking them in opposite orders.

The device population functions in the win32 InputBackend previously
locked s_populate_mutex first before calling various functions that
locked m_devices_population_mutex. This normally worked but
ControllerInterface::RefreshDevices locks m_devices_population_mutex
first and then calls HandleWindowChange which then locked
s_populate_mutex, potentially causing the deadlock.

Fix this by using PlatformPopulateDevices to lock
m_devices_population_mutex before running the code that was previously
protected by s_populate_mutex. The functions in question lock
m_devices_population_mutex anyway, so this shouldn't meaningfully
increase contention on the lock.

Reproduction steps:

* Let Dolphin finish startup.
* In Win32.cpp::OnDevicesChanged set a breakpoint on the call to
  PlatformPopulateDevices. When the breakpoint is triggered the function
  will have locked s_populate_mutex, but since PlatformPopulateDevices
  won't have run yet m_devices_population_mutex will still be unlocked.
* Unplug a device from your computer.
* Wait for the breakpoint to trigger. (At this point you can plug the
  device back in).
* Freeze the ntdll.dll!TppWorkerThread() that triggered the breakpoint.
* Resume Dolphin and start a game.
* Core::EmuThread will call ControllerInterface::ChangeWindow which
  calls RefreshDevices. It locks m_devices_population_mutex, then calls
  InputBackend::HandleWindowChange, which tries to lock
  s_populate_mutex.
* Unfreeze ntdll.dll!TppWorkerThread().

At this point EmuThread and TppWorkerThread are deadlocked. The UI is
still responsive since the Host thread is unaffected, but trying to stop
the game or close Dolphin normally will fail since EmuThread is unable
to stop.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Remove the redundant s_populate_mutex and only use
ControllerInterface::m_devices_population_mutex instead to prevent a
deadlock caused by locking them in opposite orders.

The device population functions in the win32 InputBackend previously
locked s_populate_mutex first before calling various functions that
locked m_devices_population_mutex. This normally worked but
ControllerInterface::RefreshDevices locks m_devices_population_mutex
first and then calls HandleWindowChange which then locked
s_populate_mutex, potentially causing the deadlock.

Fix this by using PlatformPopulateDevices to lock
m_devices_population_mutex before running the code that was previously
protected by s_populate_mutex. The functions in question lock
m_devices_population_mutex anyway, so this shouldn't meaningfully
increase contention on the lock.

Reproduction steps:

* Let Dolphin finish startup.
* In Win32.cpp::OnDevicesChanged set a breakpoint on the call to
  PlatformPopulateDevices. When the breakpoint is triggered the function
  will have locked s_populate_mutex, but since PlatformPopulateDevices
  won't have run yet m_devices_population_mutex will still be unlocked.
* Unplug a device from your computer.
* Wait for the breakpoint to trigger. (At this point you can plug the
  device back in).
* Freeze the ntdll.dll!TppWorkerThread() that triggered the breakpoint.
* Resume Dolphin and start a game.
* Core::EmuThread will call ControllerInterface::ChangeWindow which
  calls RefreshDevices. It locks m_devices_population_mutex, then calls
  InputBackend::HandleWindowChange, which tries to lock
  s_populate_mutex.
* Unfreeze ntdll.dll!TppWorkerThread().

At this point EmuThread and TppWorkerThread are deadlocked. The UI is
still responsive since the Host thread is unaffected, but trying to stop
the game or close Dolphin normally will fail since EmuThread is unable
to stop.
</pre>
</div>
</content>
</entry>
<entry>
<title>InputCommon: Rename SDL input backend GameController to Gamepad.</title>
<updated>2025-06-25T05:23:48+00:00</updated>
<author>
<name>Jordan Woyak</name>
<email>jordan.woyak@gmail.com</email>
</author>
<published>2025-06-25T05:16:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=609d91156a4c538071f0743793a519c5125300ff'/>
<id>609d91156a4c538071f0743793a519c5125300ff</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #13694 from jordan-woyak/sdl3</title>
<updated>2025-06-24T22:59:48+00:00</updated>
<author>
<name>JMC47</name>
<email>JMC4789@gmail.com</email>
</author>
<published>2025-06-24T22:59:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=43aa7e9b9658d3c1508512b6b0caef7737ed6683'/>
<id>43aa7e9b9658d3c1508512b6b0caef7737ed6683</id>
<content type='text'>
Update to SDL3</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Update to SDL3</pre>
</div>
</content>
</entry>
<entry>
<title>DolphinQt: Make Calibration autocomplete when data is "sensible" and stick is returned to neutral position.</title>
<updated>2025-06-24T07:18:25+00:00</updated>
<author>
<name>Jordan Woyak</name>
<email>jordan.woyak@gmail.com</email>
</author>
<published>2025-05-30T04:28:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=6a0963908dbb316f00818822065e26777621bdcc'/>
<id>6a0963908dbb316f00818822065e26777621bdcc</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>DolphinQt/InputCommon: Move some calibration logic to InputCommon and make the "Calibrate" button also map inputs.</title>
<updated>2025-06-14T21:29:25+00:00</updated>
<author>
<name>Jordan Woyak</name>
<email>jordan.woyak@gmail.com</email>
</author>
<published>2024-10-31T23:26:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=83beebaf8b074f1c7161134065f19baea08f78a6'/>
<id>83beebaf8b074f1c7161134065f19baea08f78a6</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>InputCommon: Make InputDetector::Start take a span instead of a vector.</title>
<updated>2025-06-14T21:28:09+00:00</updated>
<author>
<name>Jordan Woyak</name>
<email>jordan.woyak@gmail.com</email>
</author>
<published>2025-06-07T20:28:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=0780458069abacf9ca1b33c2f4c523f0a8d8bde9'/>
<id>0780458069abacf9ca1b33c2f4c523f0a8d8bde9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
