diff options
| author | Jcw87 <Jcw87@users.noreply.github.com> | 2025-12-23 10:23:09 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-12-23 10:23:09 -0800 |
| commit | 6ef13c620a46aed5fea525699a4832a1ad6e4d1f (patch) | |
| tree | 03d9f63ec5b89e6877580edc41f5346d679a871e /src/JSystem/JAudio2/JASCmdStack.cpp | |
| parent | c9d0c58ffe107550835987fc37504839e9d98f05 (diff) | |
JAudio2 debug (#2990)
Diffstat (limited to 'src/JSystem/JAudio2/JASCmdStack.cpp')
| -rw-r--r-- | src/JSystem/JAudio2/JASCmdStack.cpp | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/src/JSystem/JAudio2/JASCmdStack.cpp b/src/JSystem/JAudio2/JASCmdStack.cpp index 9a4fb55916..8d214151cc 100644 --- a/src/JSystem/JAudio2/JASCmdStack.cpp +++ b/src/JSystem/JAudio2/JASCmdStack.cpp @@ -5,32 +5,48 @@ #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JASCmdStack.h" +#include "JSystem/JAudio2/JASCriticalSection.h" #include "dolphin/os.h" JASPortCmd::TPortHead JASPortCmd::sCommandListOnce; JASPortCmd::TPortHead JASPortCmd::sCommandListStay; +bool JASPortCmd::addPortCmdOnce() { + JASCriticalSection cs; + return sCommandListOnce.append(this); +} + +bool JASPortCmd::setPortCmd(Command func, JASPortArgs* args) { + JUT_ASSERT(81, func != 0); + if (getSupervisor()) { + return false; + } + mFunc = func; + mArgs = args; + return true; +} + void JASPortCmd::execAllCommand() { sCommandListOnce.execCommandOnce(); sCommandListStay.execCommandStay(); } void JASPortCmd::TPortHead::execCommandOnce() { - volatile BOOL interrupts = OSDisableInterrupts(); + JASCriticalSection cs; JSULink<JASPortCmd>* next; for (JSULink<JASPortCmd>* link = getFirst(); link != NULL; link = next) { next = link->getNext(); - link->getObject()->_10(link->getObject()->_14); + JASPortCmd* cmd = link->getObject(); + cmd->getFunc()(cmd->getArgs()); remove(link); } - OSRestoreInterrupts(interrupts); } void JASPortCmd::TPortHead::execCommandStay() { - volatile int interrupts = OSDisableInterrupts(); + JASCriticalSection cs; for (JSULink<JASPortCmd>* link = getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->_10(link->getObject()->_14); + JASPortCmd* cmd = link->getObject(); + cmd->getFunc()(cmd->getArgs()); } - OSRestoreInterrupts(interrupts); } |
