diff --git a/rpcs3/Emu/Cell/lv2/sys_cond.cpp b/rpcs3/Emu/Cell/lv2/sys_cond.cpp index bf5c10d705..72f6ea660d 100644 --- a/rpcs3/Emu/Cell/lv2/sys_cond.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_cond.cpp @@ -264,6 +264,9 @@ error_code sys_cond_wait(ppu_thread& ppu, u32 cond_id, u64 timeout) { if (lv2_obj::wait_timeout(timeout, &ppu)) { + // Wait for rescheduling + ppu.check_state(); + std::lock_guard lock(cond->mutex->mutex); // Try to cancel the waiting @@ -278,6 +281,8 @@ error_code sys_cond_wait(ppu_thread& ppu, u32 cond_id, u64 timeout) { break; } + + cond->mutex->sleep(ppu); } timeout = 0;