summaryrefslogtreecommitdiff
path: root/src/KingSystem/ActorSystem/actBaseProcAccessor.cpp
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2026-10-11 03:49:21 +0100
committerGitHub <noreply@github.com>2026-10-11 03:49:21 +0100
commit08c2d002a66c0ec181345a88690fc1457d32136b (patch)
treed971f814d1cde46f56da6041037a65f512654ee3 /src/KingSystem/ActorSystem/actBaseProcAccessor.cpp
parent49c6b5c18344de6555163b3af7044970ad9d7c5e (diff)
parent6e9afd0f7d6f8e037fd71e91dfdad4b45f8e7e2f (diff)
Merge pull request #220 from leoetlino/stack/03c1-actor-link-accessor
ksys/act: rename the actor accessor to ActorLinkConstDataAccess
Diffstat (limited to 'src/KingSystem/ActorSystem/actBaseProcAccessor.cpp')
-rw-r--r--src/KingSystem/ActorSystem/actBaseProcAccessor.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/KingSystem/ActorSystem/actBaseProcAccessor.cpp b/src/KingSystem/ActorSystem/actBaseProcAccessor.cpp
new file mode 100644
index 00000000..4333471a
--- /dev/null
+++ b/src/KingSystem/ActorSystem/actBaseProcAccessor.cpp
@@ -0,0 +1,48 @@
+#include "KingSystem/ActorSystem/actBaseProcAccessor.h"
+#include "KingSystem/ActorSystem/actBaseProc.h"
+#include "KingSystem/ActorSystem/actBaseProcMgr.h"
+#include "KingSystem/Utils/Debug.h"
+
+namespace ksys::act {
+
+BaseProcAccessor::~BaseProcAccessor() {
+ if (mAcquired && mProc)
+ mProc->release();
+
+ mAcquired = false;
+ mProc = nullptr;
+}
+
+bool BaseProcAccessor::acquire(BaseProc* proc) {
+ if (mProc) {
+ if (mAcquired)
+ mProc->release();
+
+ mAcquired = false;
+ mProc = nullptr;
+ }
+
+ return proc && proc->acquire(*this);
+}
+
+bool acquireProc(BaseProcAccessor* accessor, BaseProc* proc, const sead::SafeString& from, s32) {
+ bool acquired = false;
+
+ if (accessor) {
+ acquired = accessor->acquire(proc);
+ if (!acquired)
+ return false;
+ }
+
+ if (acquired || BaseProcMgr::instance()->isHighPriorityThread())
+ return true;
+
+ sead::FixedSafeString<256> message;
+ // (%s)Acquiring from a low priority thread. Please change via ActorLinkConstDataAccess
+ message.format("(%s)低スレッドからの取得です。ActorLinkConstDataAccess経由に変更お願いします",
+ from.cstr());
+ util::PrintDebug(message);
+ return false;
+}
+
+} // namespace ksys::act