ksys/act: Fix matching issue in ActorParam

This commit is contained in:
Léo Lam 2020-11-08 12:22:08 +01:00
parent 9eb8806b6f
commit ad01b2b1fb
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
4 changed files with 12 additions and 15 deletions

View File

@ -89049,7 +89049,7 @@
0x000000710118576c,memsetSomeMemory,36,_ZN4ksys3act10ActorParam19resetDummyResourcesEv
0x0000007101185790,ActorParam::Event::ctor,244,_ZN4ksys3act10ActorParamC1Ev
0x0000007101185884,sub_7101185884,60,_ZN4ksys3act10ActorParamD1Ev
0x00000071011858c0,ActorParam::Data::doUnload,440,_ZN4ksys3act10ActorParam10deleteDataEv?
0x00000071011858c0,ActorParam::Data::doUnload,440,_ZN4ksys3act10ActorParam10deleteDataEv
0x0000007101185a78,sub_7101185A78,68,_ZN4ksys3act10ActorParamD0Ev
0x0000007101185abc,ActorParam::Load::deleteRes2,164,_ZN4ksys3act10ActorParam16deleteResHandlesEv
0x0000007101185b60,ActorParam::Load::isDummyParamResource,136,_ZNK4ksys3act10ActorParam12isDummyParamENS_3res9ActorLink5Users4UserE

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

View File

@ -11,7 +11,7 @@ void ActorParam::resetDummyResources() {
ActorParam::ActorParam() {
mRes = {};
mNumHandles1 = mNumHandles2 = 0;
mNumHandles = {};
mEvent.resetSignal();
}
@ -26,13 +26,11 @@ void ActorParam::deleteData() {
if (mActorName.isEmpty())
return;
for (s32 i = 0; i < mNumHandles1; ++i)
mHandles1[i].requestUnload();
mNumHandles1 = 0;
for (s32 i = 0; i < mNumHandles2; ++i)
mHandles2[i].requestUnload();
mNumHandles2 = 0;
for (size_t i = 0; i < mNumHandles.size(); ++i) {
for (s32 handle_idx = 0; handle_idx < mNumHandles[i]; ++handle_idx)
mHandles[i][handle_idx].requestUnload();
mNumHandles[i] = 0;
}
deleteResHandles();
@ -44,8 +42,8 @@ void ActorParam::deleteData() {
}
void ActorParam::deleteResHandles() {
mHandles1.freeBuffer();
mHandles2.freeBuffer();
for (auto& handles : mHandles)
handles.freeBuffer();
}
bool ActorParam::isDummyParam(res::ActorLink::Users::User user) const {

View File

@ -1,5 +1,6 @@
#pragma once
#include <array>
#include <container/seadBuffer.h>
#include <heap/seadDisposer.h>
#include <hostio/seadHostIONode.h>
@ -112,10 +113,8 @@ public:
Priority mPriority = Priority::AllAfter;
u32 _74 = 2;
Resources mRes;
sead::Buffer<res::Handle> mHandles1;
sead::Buffer<res::Handle> mHandles2;
s32 mNumHandles1;
s32 mNumHandles2;
std::array<sead::Buffer<res::Handle>, 2> mHandles;
std::array<s32, 2> mNumHandles;
u32 _168{};
static void resetDummyResources();