From bc8bf2c329a254b5fc348de4ec121f760faaf144 Mon Sep 17 00:00:00 2001 From: Eladash Date: Mon, 8 Aug 2022 22:11:18 +0300 Subject: [PATCH] sys_cond/lwcond: Fix waiting time in the debugger for mutex lock --- rpcs3/Emu/Cell/lv2/sys_cond.cpp | 3 +++ rpcs3/Emu/Cell/lv2/sys_lwcond.cpp | 3 +++ 2 files changed, 6 insertions(+) diff --git a/rpcs3/Emu/Cell/lv2/sys_cond.cpp b/rpcs3/Emu/Cell/lv2/sys_cond.cpp index 98cce5afa2..9ddbdba868 100644 --- a/rpcs3/Emu/Cell/lv2/sys_cond.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_cond.cpp @@ -416,6 +416,8 @@ error_code sys_cond_wait(ppu_thread& ppu, u32 cond_id, u64 timeout) { if (lv2_obj::wait_timeout(timeout, &ppu)) { + const u64 start_time = ppu.start_time; + // Wait for rescheduling if (ppu.check_state()) { @@ -442,6 +444,7 @@ error_code sys_cond_wait(ppu_thread& ppu, u32 cond_id, u64 timeout) } cond->mutex->sleep(ppu); + ppu.start_time = start_time; // Restore start time because awake has been called timeout = 0; continue; } diff --git a/rpcs3/Emu/Cell/lv2/sys_lwcond.cpp b/rpcs3/Emu/Cell/lv2/sys_lwcond.cpp index a8606b1610..eed31e3706 100644 --- a/rpcs3/Emu/Cell/lv2/sys_lwcond.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_lwcond.cpp @@ -443,6 +443,8 @@ error_code _sys_lwcond_queue_wait(ppu_thread& ppu, u32 lwcond_id, u32 lwmutex_id { if (lv2_obj::wait_timeout(timeout, &ppu)) { + const u64 start_time = ppu.start_time; + // Wait for rescheduling if (ppu.check_state()) { @@ -476,6 +478,7 @@ error_code _sys_lwcond_queue_wait(ppu_thread& ppu, u32 lwcond_id, u32 lwmutex_id } mutex->sleep(ppu); + ppu.start_time = start_time; // Restore start time because awake has been called timeout = 0; continue; }