replace existing event when its same id and filter

This commit is contained in:
Fire Cube 2025-05-12 21:51:30 +02:00
parent 688cb39942
commit e0f3ac0c43

View File

@ -348,6 +348,14 @@ int PS4_SYSV_ABI sceKernelAddTimerEvent(SceKernelEqueue eq, int id, SceKernelUse
event.event.data = interval_ms; event.event.data = interval_ms;
event.event.udata = udata; event.event.udata = udata;
event.time_added = std::chrono::steady_clock::now(); 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, LOG_DEBUG(Kernel_Event,
"Added timing event: queue name={}, queue id={}, ms-intevall={}, pointer={:x}", "Added timing event: queue name={}, queue id={}, ms-intevall={}, pointer={:x}",
eq->GetName(), event.event.ident, interval_ms, reinterpret_cast<uintptr_t>(udata)); eq->GetName(), event.event.ident, interval_ms, reinterpret_cast<uintptr_t>(udata));