summaryrefslogtreecommitdiff
path: root/src/KingSystem/ActorSystem/actBaseProcJobQue.cpp
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2022-02-08 22:30:39 +0100
committerLéo Lam <leo@leolam.fr>2022-02-08 22:52:51 +0100
commitce1b6900ab37ac7b7569738828d116d840e0e7d8 (patch)
treeba7f7317ad19fadacc3d2bf4c763e87024445fa8 /src/KingSystem/ActorSystem/actBaseProcJobQue.cpp
parentd893fd5ead7e1061cad38d25d517e1738d383a09 (diff)
ksys/act: Fix matching issues in BaseProcJobQue
Diffstat (limited to 'src/KingSystem/ActorSystem/actBaseProcJobQue.cpp')
-rw-r--r--src/KingSystem/ActorSystem/actBaseProcJobQue.cpp20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/KingSystem/ActorSystem/actBaseProcJobQue.cpp b/src/KingSystem/ActorSystem/actBaseProcJobQue.cpp
index b9cc7c04..6014b70b 100644
--- a/src/KingSystem/ActorSystem/actBaseProcJobQue.cpp
+++ b/src/KingSystem/ActorSystem/actBaseProcJobQue.cpp
@@ -59,8 +59,8 @@ bool BaseProcJobQue::pushJobs(sead::FixedSizeJQ* queue, BaseProcJobLists* lists,
for (int i = 1; link && i <= rounds; ++i)
link = static_cast<BaseProcJobLink*>(lists->getNextJob(link));
- mPool[mFreeJobIdx].set(batch_head, rounds);
- queue->enque(&mPool[mFreeJobIdx]);
+ mPool(mFreeJobIdx).set(batch_head, rounds);
+ queue->enque(&mPool(mFreeJobIdx));
num_remaining_jobs -= rounds;
rounds = std::min(rounds, num_remaining_jobs);
++mFreeJobIdx;
@@ -70,8 +70,8 @@ bool BaseProcJobQue::pushJobs(sead::FixedSizeJQ* queue, BaseProcJobLists* lists,
for (int i = 1; link && i <= num_remaining_jobs; ++i) {
link->getProc()->onJobPush(type);
if (!link->getProc()->shouldSkipJobPush(type)) {
- mPool[mFreeJobIdx].set(link, 1);
- queue->enque(&mPool[mFreeJobIdx]);
+ mPool(mFreeJobIdx).set(link, 1);
+ queue->enque(&mPool(mFreeJobIdx));
++mFreeJobIdx;
}
link = static_cast<BaseProcJobLink*>(lists->getNextJob(link));
@@ -80,8 +80,6 @@ bool BaseProcJobQue::pushJobs(sead::FixedSizeJQ* queue, BaseProcJobLists* lists,
return true;
}
-// sxtw + madd -> smaddl
-#ifdef NON_MATCHING
bool BaseProcJobQue::pushExtraJobs(sead::FixedSizeJQ* queue, BaseProcJobLists* lists, int priority,
JobType type) {
const auto& list = lists->getList(priority);
@@ -91,21 +89,21 @@ bool BaseProcJobQue::pushExtraJobs(sead::FixedSizeJQ* queue, BaseProcJobLists* l
for (auto* link = static_cast<BaseProcJobLink*>(list.front()); link;
link = static_cast<BaseProcJobLink*>(lists->getNextJob(link))) {
const auto idx = mNumExtraJobs.increment();
- if (idx >= mPool.size())
+ if (!isIndexValid(idx))
return false;
link->getProc()->onJobPush(type);
+ BaseProcJob& job = mPool[idx];
if (!link->getProc()->shouldSkipJobPush(type)) {
- mPool[idx].set(link, 1);
- if (!queue->enque(&mPool[idx]))
+ job.set(link, 1);
+ if (!queue->enque(&job))
return false;
}
}
return true;
}
-#endif
bool BaseProcJobQue::pushExtraJobs(sead::FixedSizeJQ* queue,
const agl::utl::AtomicPtrArray<BaseProcJobLink>& links) {
@@ -114,7 +112,7 @@ bool BaseProcJobQue::pushExtraJobs(sead::FixedSizeJQ* queue,
for (auto it = links.begin(), end = links.end(); it != end; ++it) {
const auto idx = mNumExtraJobs.increment();
- if (idx >= mPool.size())
+ if (!isIndexValid(idx))
return false;
mPool[idx].mJobLink = &*it;