From ac2581659a6fac4008d0140c61d1553f2d191f54 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Fri, 28 Feb 2020 19:55:43 +0300 Subject: [PATCH] RSXOffload: fix dma_manager::sync() freeze on exit Its logic was completely broken. --- rpcs3/Emu/RSX/RSXOffload.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rpcs3/Emu/RSX/RSXOffload.cpp b/rpcs3/Emu/RSX/RSXOffload.cpp index d2b9883f7f..3d6f49fe67 100644 --- a/rpcs3/Emu/RSX/RSXOffload.cpp +++ b/rpcs3/Emu/RSX/RSXOffload.cpp @@ -155,7 +155,7 @@ namespace rsx { const auto _thr = g_fxo->get(); - if (_thr->m_enqueued_count.load() < _thr->m_processed_count.load()) [[likely]] + if (_thr->m_enqueued_count.load() <= _thr->m_processed_count.load()) [[likely]] { // Nothing to do return true; @@ -169,7 +169,7 @@ namespace rsx return false; } - while (_thr->m_enqueued_count.load() < _thr->m_processed_count.load()) + while (_thr->m_enqueued_count.load() > _thr->m_processed_count.load()) { rsxthr->on_semaphore_acquire_wait(); _mm_pause(); @@ -177,7 +177,7 @@ namespace rsx } else { - while (_thr->m_enqueued_count.load() < _thr->m_processed_count.load()) + while (_thr->m_enqueued_count.load() > _thr->m_processed_count.load()) _mm_pause(); }