From e0f3ac0c43eb9846f3f67a6bb7bcd8b7a06a99f1 Mon Sep 17 00:00:00 2001 From: Fire Cube Date: Mon, 12 May 2025 21:51:30 +0200 Subject: [PATCH] replace existing event when its same id and filter --- src/core/libraries/kernel/equeue.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/core/libraries/kernel/equeue.cpp b/src/core/libraries/kernel/equeue.cpp index fc70b467e..a1ce80f43 100644 --- a/src/core/libraries/kernel/equeue.cpp +++ b/src/core/libraries/kernel/equeue.cpp @@ -348,6 +348,14 @@ int PS4_SYSV_ABI sceKernelAddTimerEvent(SceKernelEqueue eq, int id, SceKernelUse event.event.data = interval_ms; event.event.udata = udata; event.time_added = std::chrono::steady_clock::now(); + + if (eq->EventExists(event.event.ident, event.event.filter)) { + eq->RemoveEvent(id, SceKernelEvent::Filter::Timer); + LOG_DEBUG(Kernel_Event, + "Timer event already exists, removing it: queue name={}, queue id={}", + eq->GetName(), event.event.ident); + } + LOG_DEBUG(Kernel_Event, "Added timing event: queue name={}, queue id={}, ms-intevall={}, pointer={:x}", eq->GetName(), event.event.ident, interval_ms, reinterpret_cast(udata));