Disconnect real Wiimotes when disconnected by games
This commit makes real Wiimotes really disconnect when they are disconnected by the emulated software, which is more similar to how it works with a real Wii and allows Wiimotes to be disconnected after timeout for power saving. This is currently only enabled on Linux, because of limitations on the other platforms.
This commit is contained in:
parent
8a1bbaa563
commit
d575b40c73
|
@ -72,7 +72,9 @@ 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_HYBRID & g_wiimote_sources[number])
|
||||
if (WIIMOTE_SRC_REAL & g_wiimote_sources[number])
|
||||
WiimoteReal::ControlChannel(number, channel_id, data, size);
|
||||
else if (WIIMOTE_SRC_HYBRID & g_wiimote_sources[number])
|
||||
static_cast<WiimoteEmu::Wiimote*>(s_config.GetController(number))
|
||||
->ControlChannel(channel_id, data, size);
|
||||
}
|
||||
|
|
|
@ -145,6 +145,8 @@ void WiimoteScanner::FindWiimotes(std::vector<Wiimote*>& found_wiimotes, Wiimote
|
|||
|
||||
WiimoteLinux::WiimoteLinux(bdaddr_t bdaddr) : Wiimote(), m_bdaddr(bdaddr)
|
||||
{
|
||||
m_really_disconnect = true;
|
||||
|
||||
m_cmd_sock = -1;
|
||||
m_int_sock = -1;
|
||||
|
||||
|
|
|
@ -125,7 +125,10 @@ void Wiimote::ControlChannel(const u16 channel, const void* const data, const u3
|
|||
// Check for custom communication
|
||||
if (99 == channel)
|
||||
{
|
||||
EmuStop();
|
||||
if (m_really_disconnect)
|
||||
DisconnectInternal();
|
||||
else
|
||||
EmuStop();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -79,6 +79,10 @@ 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.
|
||||
// This is not enabled on all platforms as connecting a Wiimote can be a pain on some platforms.
|
||||
bool m_really_disconnect = false;
|
||||
|
||||
private:
|
||||
void ClearReadQueue();
|
||||
|
|
Loading…
Reference in New Issue