From 89ca32daa62033c1fd88169d6be6897b15b354cd Mon Sep 17 00:00:00 2001 From: Michael Maltese Date: Fri, 31 Mar 2017 14:07:28 -0700 Subject: [PATCH] GBASockServer: cleanup GetNextSock and GetNextClock --- Source/Core/Core/HW/SI/SI_DeviceGBA.cpp | 42 ++++++++++--------------- 1 file changed, 16 insertions(+), 26 deletions(-) diff --git a/Source/Core/Core/HW/SI/SI_DeviceGBA.cpp b/Source/Core/Core/HW/SI/SI_DeviceGBA.cpp index b9949f274d..382fadd749 100644 --- a/Source/Core/Core/HW/SI/SI_DeviceGBA.cpp +++ b/Source/Core/Core/HW/SI/SI_DeviceGBA.cpp @@ -136,36 +136,26 @@ void GBAConnectionWaiter_Shutdown() s_connection_thread.join(); } -static bool GetAvailableSock(std::unique_ptr& sock_to_fill) +template +static std::unique_ptr MoveFromFront(std::queue>& ptrs) { - bool sock_filled = false; - - std::lock_guard lk(s_cs_gba); - - if (!s_waiting_socks.empty()) - { - sock_to_fill = std::move(s_waiting_socks.front()); - s_waiting_socks.pop(); - sock_filled = true; - } - - return sock_filled; + if (ptrs.empty()) + return nullptr; + std::unique_ptr ptr = std::move(ptrs.front()); + ptrs.pop(); + return ptr; } -static bool GetNextClock(std::unique_ptr& sock_to_fill) +static std::unique_ptr GetNextSock() { - bool sock_filled = false; + std::lock_guard lk(s_cs_gba); + return MoveFromFront(s_waiting_socks); +} +static std::unique_ptr GetNextClock() +{ std::lock_guard lk(s_cs_gba_clk); - - if (!s_waiting_clocks.empty()) - { - sock_to_fill = std::move(s_waiting_clocks.front()); - s_waiting_clocks.pop(); - sock_filled = true; - } - - return sock_filled; + return MoveFromFront(s_waiting_clocks); } GBASockServer::GBASockServer() @@ -201,7 +191,7 @@ void GBASockServer::Disconnect() void GBASockServer::ClockSync() { if (!m_clock_sync) - if (!GetNextClock(m_clock_sync)) + if (!(m_clock_sync = GetNextClock())) return; u32 time_slice = 0; @@ -236,7 +226,7 @@ void GBASockServer::ClockSync() bool GBASockServer::Connect() { if (!IsConnected()) - GetAvailableSock(m_client); + m_client = GetNextSock(); return IsConnected(); }