summaryrefslogtreecommitdiff
path: root/libs/JSystem/src/JAudio2/JASCmdStack.cpp
diff options
context:
space:
mode:
authorLuke Street <luke@street.dev>2026-03-01 15:35:36 -0700
committerGitHub <noreply@github.com>2026-03-01 14:35:36 -0800
commit9649319ec4926457ef85e6094f8207474c977c2d (patch)
tree1c5cd4c7cc4c1aee03f28921213da47f2775444d /libs/JSystem/src/JAudio2/JASCmdStack.cpp
parent6e149819e13b1f70ecbf8a4c66b030c17ffed2bb (diff)
Reorganize library code into `libs/` (#3119)
* Reorganize files into libs/{dolphin,JSystem,PowerPC_EABI_Support,revolution,TRK_MINNOW_DOLPHIN} * Update configure.py and project.py for new libs structure * Refactor `#include <dolphin/x.h>` -> `<x.h>` * Remove `__REVOLUTION_SDK__` forwards from dolphin * Fix dolphin/ references in revolution * Wrap `#include <dolphin.h>` in `!__REVOLUTION_SDK__` * Always build TRK against dolphin headers * Resolve revolution SDK header resolution issues
Diffstat (limited to 'libs/JSystem/src/JAudio2/JASCmdStack.cpp')
-rw-r--r--libs/JSystem/src/JAudio2/JASCmdStack.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/libs/JSystem/src/JAudio2/JASCmdStack.cpp b/libs/JSystem/src/JAudio2/JASCmdStack.cpp
new file mode 100644
index 0000000000..beaeee492e
--- /dev/null
+++ b/libs/JSystem/src/JAudio2/JASCmdStack.cpp
@@ -0,0 +1,52 @@
+//
+// JASCmdStack
+//
+
+#include "JSystem/JSystem.h" // IWYU pragma: keep
+
+#include "JSystem/JAudio2/JASCmdStack.h"
+#include "JSystem/JAudio2/JASCriticalSection.h"
+#include <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 != NULL);
+ if (getSupervisor()) {
+ return false;
+ }
+ mFunc = func;
+ mArgs = args;
+ return true;
+}
+
+void JASPortCmd::execAllCommand() {
+ sCommandListOnce.execCommandOnce();
+ sCommandListStay.execCommandStay();
+}
+
+void JASPortCmd::TPortHead::execCommandOnce() {
+ JASCriticalSection cs;
+ JSULink<JASPortCmd>* next;
+ for (JSULink<JASPortCmd>* link = getFirst(); link != NULL; link = next) {
+ next = link->getNext();
+ JASPortCmd* cmd = link->getObject();
+ cmd->getFunc()(cmd->getArgs());
+ remove(link);
+ }
+}
+
+void JASPortCmd::TPortHead::execCommandStay() {
+ JASCriticalSection cs;
+ for (JSULink<JASPortCmd>* link = getFirst(); link != NULL; link = link->getNext()) {
+ JASPortCmd* cmd = link->getObject();
+ cmd->getFunc()(cmd->getArgs());
+ }
+}