summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorMarkus Wick <degasus@users.noreply.github.com>2015-12-18 15:30:49 +0100
committerMarkus Wick <degasus@users.noreply.github.com>2015-12-18 15:30:49 +0100
commite638775bc79b1e5da24dce7892bc1c22db400174 (patch)
tree1007303e5bc1713116646556399732af795d5ecd /Source/Core
parentde21da5fb25446a68c2bb79400c4935dfdbbbaa2 (diff)
parent94ae134bf495cd943c8750808260e234da239544 (diff)
Merge pull request #3351 from degasus/wip
Real Wiimote: Don't delay speaker data.
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp44
-rw-r--r--Source/Core/Core/HW/WiimoteReal/WiimoteReal.h7
2 files changed, 17 insertions, 34 deletions
diff --git a/Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp b/Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp
index 4360112834..e50fadf690 100644
--- a/Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp
+++ b/Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp
@@ -11,7 +11,6 @@
#include "Common/IniFile.h"
#include "Common/StringUtil.h"
#include "Common/Thread.h"
-#include "Common/Timer.h"
#include "Core/ConfigManager.h"
#include "Core/Host.h"
#include "Core/HW/WiimoteEmu/WiimoteEmu.h"
@@ -190,7 +189,7 @@ void Wiimote::InterruptChannel(const u16 channel, const void* const _data, const
WriteReport(std::move(rpt));
}
-bool Wiimote::Read()
+void Wiimote::Read()
{
Report rpt(MAX_PAYLOAD);
auto const result = IORead(rpt.data());
@@ -204,51 +203,38 @@ bool Wiimote::Read()
Socket.send((char*)rpt.data(),
rpt.size(),
sf::IpAddress::LocalHost,
- SConfig::GetInstance().iBBDumpPort);
+ SConfig::GetInstance().iBBDumpPort);
}
// Add it to queue
rpt.resize(result);
m_read_reports.Push(std::move(rpt));
- return true;
}
else if (0 == result)
{
ERROR_LOG(WIIMOTE, "Wiimote::IORead failed. Disconnecting Wiimote %d.", m_index + 1);
DisconnectInternal();
}
-
- return false;
}
-bool Wiimote::Write()
+void Wiimote::Write()
{
- if (!m_write_reports.Empty())
- {
- Report const& rpt = m_write_reports.Front();
-
- bool const is_speaker_data = rpt[1] == WM_WRITE_SPEAKER_DATA;
-
- if (!is_speaker_data || m_last_audio_report.GetTimeDifference() > 5)
- {
- if (SConfig::GetInstance().iBBDumpPort > 0 && m_index == WIIMOTE_BALANCE_BOARD)
- {
- static sf::UdpSocket Socket;
- Socket.send((char*)rpt.data(), rpt.size(), sf::IpAddress::LocalHost, SConfig::GetInstance().iBBDumpPort);
- }
- IOWrite(rpt.data(), rpt.size());
+ if (m_write_reports.Empty())
+ return;
- if (is_speaker_data)
- {
- m_last_audio_report.Update();
- }
+ Report const& rpt = m_write_reports.Front();
- m_write_reports.Pop();
- return true;
- }
+ if (SConfig::GetInstance().iBBDumpPort > 0 && m_index == WIIMOTE_BALANCE_BOARD)
+ {
+ static sf::UdpSocket Socket;
+ Socket.send((char*)rpt.data(), rpt.size(), sf::IpAddress::LocalHost, SConfig::GetInstance().iBBDumpPort);
}
+ IOWrite(rpt.data(), rpt.size());
- return false;
+ m_write_reports.Pop();
+
+ if (!m_write_reports.Empty())
+ IOWakeup();
}
static bool IsDataReport(const Report& rpt)
diff --git a/Source/Core/Core/HW/WiimoteReal/WiimoteReal.h b/Source/Core/Core/HW/WiimoteReal/WiimoteReal.h
index 8ffc814cae..1ca31a8d69 100644
--- a/Source/Core/Core/HW/WiimoteReal/WiimoteReal.h
+++ b/Source/Core/Core/HW/WiimoteReal/WiimoteReal.h
@@ -14,7 +14,6 @@
#include "Common/Common.h"
#include "Common/FifoQueue.h"
#include "Common/NonCopyable.h"
-#include "Common/Timer.h"
#include "Core/HW/Wiimote.h"
#include "Core/HW/WiimoteReal/WiimoteRealBase.h"
@@ -39,8 +38,8 @@ public:
const Report& ProcessReadQueue();
- bool Read();
- bool Write();
+ void Read();
+ void Write();
void StartThread();
void StopThread();
@@ -109,8 +108,6 @@ private:
Common::FifoQueue<Report> m_read_reports;
Common::FifoQueue<Report> m_write_reports;
-
- Common::Timer m_last_audio_report;
};
class WiimoteScanner