mirror of
https://github.com/wheremyfoodat/Panda3DS.git
synced 2025-05-05 03:34:49 +12:00
Update DSP semaphore on semaphore event signal
Fixes Pokemon X and other DSP-needy games...
This commit is contained in:
parent
d3dc9e2f71
commit
f58354af06
7 changed files with 53 additions and 15 deletions
|
@ -12,9 +12,9 @@ const char* Kernel::resetTypeToString(u32 type) {
|
|||
}
|
||||
}
|
||||
|
||||
Handle Kernel::makeEvent(ResetType resetType) {
|
||||
Handle Kernel::makeEvent(ResetType resetType, Event::CallbackType callback) {
|
||||
Handle ret = makeObject(KernelObjectType::Event);
|
||||
objects[ret].data = new Event(resetType);
|
||||
objects[ret].data = new Event(resetType, callback);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -42,8 +42,13 @@ bool Kernel::signalEvent(Handle handle) {
|
|||
event->fired = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
rescheduleThreads();
|
||||
// Run the callback for events that require a special callback
|
||||
if (event->callback != Event::CallbackType::None) [[unlikely]] {
|
||||
runEventCallback(event->callback);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -230,4 +235,12 @@ void Kernel::waitSynchronizationN() {
|
|||
} else {
|
||||
Helpers::panic("WaitSynchronizationN with waitAll");
|
||||
}
|
||||
}
|
||||
|
||||
void Kernel::runEventCallback(Event::CallbackType callback) {
|
||||
switch (callback) {
|
||||
case Event::CallbackType::None: break;
|
||||
case Event::CallbackType::DSPSemaphore: serviceManager.getDSP().onSemaphoreEventSignal(); break;
|
||||
default: Helpers::panic("Unimplemented special callback for kernel event!"); break;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue