Fix passing user data in user-triggered equeue events (#2948)

This commit is contained in:
Marcin Mikołajczyk 2025-06-03 20:42:20 +02:00 committed by GitHub
parent 8cdd8dd725
commit 5b6fc788b3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 8 additions and 0 deletions

View file

@ -145,6 +145,8 @@ bool EqueueInternal::TriggerEvent(u64 ident, s16 filter, void* trigger_data) {
if (event.event.ident == ident && event.event.filter == filter) { if (event.event.ident == ident && event.event.filter == filter) {
if (filter == SceKernelEvent::Filter::VideoOut) { if (filter == SceKernelEvent::Filter::VideoOut) {
event.TriggerDisplay(trigger_data); event.TriggerDisplay(trigger_data);
} else if (filter == SceKernelEvent::Filter::User) {
event.TriggerUser(trigger_data);
} else { } else {
event.Trigger(trigger_data); event.Trigger(trigger_data);
} }

View file

@ -98,6 +98,12 @@ struct EqueueEvent {
event.data = reinterpret_cast<uintptr_t>(data); event.data = reinterpret_cast<uintptr_t>(data);
} }
void TriggerUser(void* data) {
is_triggered = true;
event.fflags++;
event.udata = data;
}
void TriggerDisplay(void* data) { void TriggerDisplay(void* data) {
is_triggered = true; is_triggered = true;
if (data != nullptr) { if (data != nullptr) {