diff options
| author | Léo Lam <leo@leolam.fr> | 2026-10-11 04:13:20 +0200 |
|---|---|---|
| committer | Léo Lam <leo@leolam.fr> | 2026-10-11 04:13:20 +0200 |
| commit | 6e9afd0f7d6f8e037fd71e91dfdad4b45f8e7e2f (patch) | |
| tree | d971f814d1cde46f56da6041037a65f512654ee3 /src/KingSystem/ActorSystem/actBaseProcAccessor.cpp | |
| parent | 49c6b5c18344de6555163b3af7044970ad9d7c5e (diff) | |
ksys/act: rename the actor accessor to ActorLinkConstDataAccess
The 0x18-sized accessor appears to be named ActorLinkConstDataAccess
based on a source path string in the Wii U build. The 0x10-sized
base class (which we had given the name to) only holds a BaseProc and
its dtor/acquire functions live in a separate TU so let's rename it
BaseProcAccessor (unofficial name).
acquireActor is a header inline whose one copy landed in the BeamBase
object. Nothing in BeamBase calls it, so the BeamBase function that used
it was probably dead-stripped by the linker.
(AI assisted using Claude Opus 5.5)
Diffstat (limited to 'src/KingSystem/ActorSystem/actBaseProcAccessor.cpp')
| -rw-r--r-- | src/KingSystem/ActorSystem/actBaseProcAccessor.cpp | 48 |
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 |
