Fix Wiimotes not reconnecting on button press
5.0-56 broke reconnecting a Wiimote on button press; this is because data reporting was now always stopped for real Wii remotes on disconnect, making it impossible to know a button was pressed in the first place (to reconnect the Wiimote). This semi-reverts to the previous behaviour, where data reporting is never stopped. (Also, control channels now go through WiimoteEmu, just like before, to make sure some things are reset on disconnection.) Hopefully fixes issue 9711.
This commit is contained in:
parent
11fea215f1
commit
7c3a3ce46d
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue