Merge branch 'main' into gr2fix

This commit is contained in:
Valdis Bogdāns 2026-02-14 02:28:51 +02:00 committed by GitHub
commit a88dc03cc2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 8 deletions

View File

@ -32,6 +32,14 @@ bool EqueueInternal::AddEvent(EqueueEvent& event) {
event.timer_interval = std::chrono::microseconds(event.event.data - offset);
}
// Remove add flag from event
event.event.flags &= ~SceKernelEvent::Flags::Add;
// Clear flag is appended to most event types internally.
if (event.event.filter != SceKernelEvent::Filter::User) {
event.event.flags |= SceKernelEvent::Flags::Clear;
}
const auto& it = std::ranges::find(m_events, event);
if (it != m_events.cend()) {
*it = std::move(event);
@ -165,10 +173,6 @@ int EqueueInternal::GetTriggeredEvents(SceKernelEvent* ev, int num) {
for (auto it = m_events.begin(); it != m_events.end();) {
if (it->IsTriggered()) {
ev[count++] = it->event;
// Event should not trigger again
it->ResetTriggerState();
if (it->event.flags & SceKernelEvent::Flags::Clear) {
it->Clear();
}

View File

@ -84,11 +84,8 @@ struct EqueueEvent {
std::chrono::microseconds timer_interval;
std::unique_ptr<boost::asio::steady_timer> timer;
void ResetTriggerState() {
is_triggered = false;
}
void Clear() {
is_triggered = false;
event.fflags = 0;
event.data = 0;
}