summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorPierre Bourdon <delroth@gmail.com>2016-07-23 11:41:01 +0200
committerGitHub <noreply@github.com>2016-07-23 11:41:01 +0200
commit78b68b707fbceb03d03abe0c41ffb73abb3a58d7 (patch)
tree0bb1308f77a61c5d288db4f13d302298ad265600 /Source/Core
parent048a4ce186aad43f712d09b9b6dbf9c2f15f96df (diff)
parent7c3a3ce46d16375c2cffafa022ec035577d5a636 (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.cpp4
-rw-r--r--Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp2
-rw-r--r--Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp4
-rw-r--r--Source/Core/Core/HW/WiimoteReal/WiimoteReal.h4
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;