diff options
| author | Pierre Bourdon <delroth@gmail.com> | 2016-07-23 11:41:01 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-07-23 11:41:01 +0200 |
| commit | 78b68b707fbceb03d03abe0c41ffb73abb3a58d7 (patch) | |
| tree | 0bb1308f77a61c5d288db4f13d302298ad265600 /Source/Core | |
| parent | 048a4ce186aad43f712d09b9b6dbf9c2f15f96df (diff) | |
| parent | 7c3a3ce46d16375c2cffafa022ec035577d5a636 (diff) | |
Merge pull request #4052 from leoetlino/wiimote-reconnect
Fix Wiimotes not reconnecting on button press
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Core/HW/Wiimote.cpp | 4 | ||||
| -rw-r--r-- | Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp | 2 | ||||
| -rw-r--r-- | Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp | 4 | ||||
| -rw-r--r-- | Source/Core/Core/HW/WiimoteReal/WiimoteReal.h | 4 |
4 files changed, 6 insertions, 8 deletions
diff --git a/Source/Core/Core/HW/Wiimote.cpp b/Source/Core/Core/HW/Wiimote.cpp index d10620c4fb..69c78448d2 100644 --- a/Source/Core/Core/HW/Wiimote.cpp +++ b/Source/Core/Core/HW/Wiimote.cpp @@ -71,9 +71,7 @@ void Pause() // An L2CAP packet is passed from the Core to the Wiimote on the HID CONTROL channel. void ControlChannel(int number, u16 channel_id, const void* data, u32 size) { - if (WIIMOTE_SRC_REAL & g_wiimote_sources[number]) - WiimoteReal::ControlChannel(number, channel_id, data, size); - else if (WIIMOTE_SRC_HYBRID & g_wiimote_sources[number]) + if (WIIMOTE_SRC_HYBRID & g_wiimote_sources[number]) static_cast<WiimoteEmu::Wiimote*>(s_config.GetController(number)) ->ControlChannel(channel_id, data, size); } diff --git a/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp b/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp index 039d89679f..276943b578 100644 --- a/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp +++ b/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp @@ -771,6 +771,8 @@ void Wiimote::ControlChannel(const u16 _channelID, const void* _pData, u32 _Size // Wiimote disconnected // reset eeprom/register/reporting mode Reset(); + if (WIIMOTE_SRC_REAL & g_wiimote_sources[m_index]) + WiimoteReal::ControlChannel(m_index, _channelID, _pData, _Size); return; } diff --git a/Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp b/Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp index df8e65d0f2..af62ece6ba 100644 --- a/Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp +++ b/Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp @@ -121,12 +121,10 @@ void Wiimote::ClearReadQueue() void Wiimote::ControlChannel(const u16 channel, const void* const data, const u32 size) { // Check for custom communication - if (99 == channel) + if (channel == 99) { if (m_really_disconnect) DisconnectInternal(); - else - EmuStop(); } else { diff --git a/Source/Core/Core/HW/WiimoteReal/WiimoteReal.h b/Source/Core/Core/HW/WiimoteReal/WiimoteReal.h index e4e823bece..b576788157 100644 --- a/Source/Core/Core/HW/WiimoteReal/WiimoteReal.h +++ b/Source/Core/Core/HW/WiimoteReal/WiimoteReal.h @@ -81,8 +81,8 @@ protected: Report m_last_input_report; u16 m_channel; u8 m_last_connect_request_counter; - // If true, the Wiimote will be really disconnected when it is disconnected by Dolphin, - // instead of just pausing data reporting. + // If true, the Wiimote will be really disconnected when it is disconnected by Dolphin. + // In any other case, data reporting is not paused to allow reconnecting on any button press. // This is not enabled on all platforms as connecting a Wiimote can be a pain on some platforms. bool m_really_disconnect = false; |
