From 6535fb0603e56bbebb0b86d5a325640a6805eb74 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Sat, 17 Aug 2019 23:53:49 +0300 Subject: [PATCH] Fix _sys_lwcond_signal_all Fixup after #5883 --- rpcs3/Emu/Cell/lv2/sys_lwcond.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/Cell/lv2/sys_lwcond.cpp b/rpcs3/Emu/Cell/lv2/sys_lwcond.cpp index fc59274e4f..cc326da10b 100644 --- a/rpcs3/Emu/Cell/lv2/sys_lwcond.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_lwcond.cpp @@ -29,7 +29,7 @@ error_code _sys_lwcond_create(ppu_thread& ppu, vm::ptr lwcond_id, u32 lwmut if (protocol == SYS_SYNC_RETRY) { - // Lwcond can't have SYS_SYNC_RETRY protocol + // Lwcond can't have SYS_SYNC_RETRY protocol protocol = SYS_SYNC_PRIORITY; } @@ -195,6 +195,8 @@ error_code _sys_lwcond_signal_all(ppu_thread& ppu, u32 lwcond_id, u32 lwmutex_id fmt::throw_exception("Unknown mode (%d)" HERE, mode); } + bool need_awake = false; + const auto cond = idm::check(lwcond_id, [&](lv2_lwcond& cond) -> s32 { lv2_lwmutex* mutex; @@ -233,6 +235,7 @@ error_code _sys_lwcond_signal_all(ppu_thread& ppu, u32 lwcond_id, u32 lwmutex_id else { lv2_obj::append(cpu); + need_awake = true; } result++; @@ -249,7 +252,7 @@ error_code _sys_lwcond_signal_all(ppu_thread& ppu, u32 lwcond_id, u32 lwmutex_id return CELL_ESRCH; } - if (mode == 2) + if (need_awake) { lv2_obj::awake_all(); }