From 73aa8c50a28070e9617fbcfe48229fb801fd1864 Mon Sep 17 00:00:00 2001 From: Sepalani Date: Sat, 3 Feb 2024 15:20:29 +0400 Subject: [PATCH] BBA/HLE: Sleep when no data is received --- Source/Core/Core/HW/EXI/BBA/BuiltIn.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/Source/Core/Core/HW/EXI/BBA/BuiltIn.cpp b/Source/Core/Core/HW/EXI/BBA/BuiltIn.cpp index e29d1f9188..67c60d35d5 100644 --- a/Source/Core/Core/HW/EXI/BBA/BuiltIn.cpp +++ b/Source/Core/Core/HW/EXI/BBA/BuiltIn.cpp @@ -678,14 +678,17 @@ bool CEXIETHERNET::BuiltInBBAInterface::SendFrame(const u8* frame, u32 size) void CEXIETHERNET::BuiltInBBAInterface::ReadThreadHandler(CEXIETHERNET::BuiltInBBAInterface* self) { + std::size_t datasize = 0; while (!self->m_read_thread_shutdown.IsSet()) { - // make thread less cpu hungry - std::this_thread::sleep_for(std::chrono::milliseconds(1)); + if (datasize == 0) + { + // Make thread less CPU hungry + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + } if (!self->m_read_enabled.IsSet()) continue; - std::size_t datasize = 0; u8 wp = self->m_eth_ref->page_ptr(BBA_RWP); const u8 rp = self->m_eth_ref->page_ptr(BBA_RRP); @@ -711,6 +714,10 @@ void CEXIETHERNET::BuiltInBBAInterface::ReadThreadHandler(CEXIETHERNET::BuiltInB self->m_queue_read++; self->m_queue_read &= 15; } + else + { + datasize = 0; + } // Check network stack references self->PollData(&datasize);