ksys/act: Match BaseProcMgr ctor

This commit is contained in:
Léo Lam 2021-02-07 17:28:59 +01:00
parent 5b83ad5f82
commit 1bb0c30e64
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
6 changed files with 18 additions and 11 deletions

View File

@ -91775,7 +91775,7 @@
0x00000071011bcfd0,sub_71011BCFD0,44,
0x00000071011bcffc,sub_71011BCFFC,100,_ZN4ksys3act11BaseProcMgr18SingletonDisposer_D2Ev
0x00000071011bd060,sub_71011BD060,108,_ZN4ksys3act11BaseProcMgr18SingletonDisposer_D0Ev
0x00000071011bd0cc,BaseProcMgr::createInstance,372,
0x00000071011bd0cc,BaseProcMgr::createInstance,372,_ZN4ksys3act11BaseProcMgr14createInstanceEPN4sead4HeapE
0x00000071011bd240,sub_71011BD240,164,
0x00000071011bd2e4,sub_71011BD2E4,36,
0x00000071011bd308,BaseProcMgr::init,680,

Can't render this file because it is too large.

@ -1 +1 @@
Subproject commit 88f87ad4b166e1da384abb6131e8141ec1722b15
Subproject commit 1c390c9183f0c37496b9544bcc0fa78d736e9d7d

View File

@ -27,7 +27,7 @@ BaseProc::~BaseProc() {
unlinkCalcChild_();
unlinkCalcParent_();
if (mDeleteListNode.isLinked())
if (mUpdateStateListNode.isLinked())
BaseProcMgr::instance()->eraseFromUpdateStateList(*this);
}
@ -157,7 +157,7 @@ BaseProc::PreDeletePrepareResult BaseProc::prepareForPreDelete_() {
// NON_MATCHING: branching
bool BaseProc::startPreparingForPreDelete_() {
if (mDeleteListNode.isLinked())
if (mUpdateStateListNode.isLinked())
return false;
return !mBaseProcLinkData || mBaseProcLinkData->refCount() <= 0 ||

View File

@ -286,8 +286,8 @@ protected:
BaseProc* mConnectedCalcChildNew = nullptr;
sead::SafeArray<BaseProcJobHandler*, 7> mJobHandlers{};
sead::Delegate1R<BaseProc, void*, bool> mInvoker;
sead::ListNode mPostDeleteListNode;
sead::ListNode mDeleteListNode;
sead::ListNode mPreDeleteListNode;
sead::ListNode mUpdateStateListNode;
BaseProcMapNode mMapNode{this};
BaseProcUnit* mProcUnit = nullptr;
sead::Atomic<s32> mRefCount = 0;

View File

@ -6,6 +6,11 @@ namespace ksys::act {
SEAD_SINGLETON_DISPOSER_IMPL(BaseProcMgr)
BaseProcMgr::BaseProcMgr() {
mProcPreDeleteList.initOffset(offsetof(BaseProc, mPreDeleteListNode));
mProcUpdateStateList.initOffset(offsetof(BaseProc, mUpdateStateListNode));
}
void BaseProcMgr::generateProcId(u32* id) {
*id = mCreatedProcCounter.increment();
}
@ -64,7 +69,7 @@ void BaseProcMgr::processPreDeleteList() {
}
bool BaseProcMgr::hasExtraJobLink(BaseProcJobLink* job_link, s32 idx) {
for (auto& ptr : mExtraJobLinkArrays[idx]) {
for (auto& ptr : mExtraJobLinkArrays.ref()[idx]) {
if (&ptr == job_link)
return true;
}
@ -72,8 +77,8 @@ bool BaseProcMgr::hasExtraJobLink(BaseProcJobLink* job_link, s32 idx) {
}
void BaseProcMgr::clearExtraJobArrays() {
mExtraJobLinkArrays[0].clear();
mExtraJobLinkArrays[1].clear();
mExtraJobLinkArrays.ref()[0].clear();
mExtraJobLinkArrays.ref()[1].clear();
}
void BaseProcMgr::setActorJobTypeAndPrio(JobType type, s32 prio, bool x) {

View File

@ -8,6 +8,7 @@
#include <prim/seadBitFlag.h>
#include <prim/seadScopedLock.h>
#include <prim/seadSizedEnum.h>
#include <prim/seadStorageFor.h>
#include <thread/seadAtomic.h>
#include <thread/seadCriticalSection.h>
#include "KingSystem/ActorSystem/actBaseProc.h"
@ -202,7 +203,7 @@ private:
BaseProcInitializer* mProcInitializer = nullptr;
BaseProcDeleter* mProcDeleter = nullptr;
bool mIsPushingJobs = false;
bool mPushActorJobType3InsteadOf6 = false;
sead::Atomic<bool> mPushActorJobType3InsteadOf6 = false;
bool mEnableExtraJobPush = false;
Mode mMode = Mode::_0;
bool mUnk2 = false;
@ -214,7 +215,8 @@ private:
u32 mHavokThreadId1 = 0;
u32 mHavokThreadId2 = 0;
u32 mUnk4 = 0;
sead::SafeArray<ExtraJobLinkArray, 2> mExtraJobLinkArrays{};
sead::StorageFor<sead::SafeArray<ExtraJobLinkArray, 2>> mExtraJobLinkArrays{
sead::ZeroInitializeTag{}};
};
KSYS_CHECK_SIZE_NX150(BaseProcMgr, 0x21a0);