mirror of https://github.com/zeldaret/botw.git
ksys/res: Implement Handle destructor
This commit is contained in:
parent
0a0d287e37
commit
afec1a82cc
|
|
@ -90788,9 +90788,9 @@
|
|||
0x0000007101201794,ResourceLoadArg2::ctor,64,_ZN4ksys3res17SimpleLoadRequestC1Ev
|
||||
0x00000071012017d4,ResourceLoadArg3::ctor,60,_ZN4ksys3res23SimplePackedLoadRequestC1Ev
|
||||
0x0000007101201810,Res::ctor,72,_ZN4ksys3res6HandleC1Ev
|
||||
0x0000007101201858,Res::dtor,156,
|
||||
0x00000071012018f4,Res::unload,136,
|
||||
0x000000710120197c,Res::dtorDelete,164,
|
||||
0x0000007101201858,Res::dtor,156,_ZN4ksys3res6HandleD1Ev
|
||||
0x00000071012018f4,Res::unload,136,_ZN4ksys3res6Handle6unloadEv
|
||||
0x000000710120197c,Res::dtorDelete,164,_ZN4ksys3res6HandleD0Ev
|
||||
0x0000007101201a20,Res::getResource,104,
|
||||
0x0000007101201a88,Res::hasResourceAndIsParseOk,96,
|
||||
0x0000007101201ae8,Res::getResourceWithoutChecks,12,
|
||||
|
|
@ -90818,8 +90818,8 @@
|
|||
0x0000007101202934,Res::parse,204,
|
||||
0x0000007101202a00,ResourceLoadArgBase::rtti1,112,_ZNK4ksys3res12ILoadRequest27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
|
||||
0x0000007101202a70,ResourceLoadArgBase::rtti2,92,_ZNK4ksys3res12ILoadRequest18getRuntimeTypeInfoEv
|
||||
0x0000007101202acc,Res::rtti1,112,
|
||||
0x0000007101202b3c,Res::rtti2,92,
|
||||
0x0000007101202acc,Res::rtti1,112,_ZNK4ksys3res6Handle27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
|
||||
0x0000007101202b3c,Res::rtti2,92,_ZNK4ksys3res6Handle18getRuntimeTypeInfoEv
|
||||
0x0000007101202b98,ResourceLoadArg::rtti1,204,_ZNK4ksys3res11LoadRequest27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
|
||||
0x0000007101202c64,ResourceLoadArg::rtti2,92,_ZNK4ksys3res11LoadRequest18getRuntimeTypeInfoEv
|
||||
0x0000007101202cc0,ResourceLoadArg::dtorDelete,4,_ZN4ksys3res11LoadRequestD0Ev
|
||||
|
|
|
|||
|
Can't render this file because it is too large.
|
|
|
@ -2,6 +2,8 @@
|
|||
#include <container/seadBuffer.h>
|
||||
#include <prim/seadSafeString.h>
|
||||
#include <time/seadTickTime.h>
|
||||
#include "KingSystem/Resource/resResourceMgrTask.h"
|
||||
#include "KingSystem/Resource/resSystem.h"
|
||||
|
||||
namespace ksys::res {
|
||||
|
||||
|
|
@ -40,4 +42,31 @@ const sead::Buffer<const sead::SafeString> sStatusStrings{0x11, sStatusStrings_}
|
|||
|
||||
Handle::Handle() = default;
|
||||
|
||||
Handle::~Handle() {
|
||||
unload();
|
||||
}
|
||||
|
||||
void Handle::unload() {
|
||||
if (!mFlags.isOn(Flag::_2))
|
||||
return;
|
||||
|
||||
mFlags.reset(Flag::_7);
|
||||
mFlags.set(Flag::_4);
|
||||
|
||||
if (mTaskHandle.hasTask()) {
|
||||
mTaskHandle.removeTaskFromQueue();
|
||||
if (!mUnit) {
|
||||
stubbedLogFunction();
|
||||
mStatus = Status::_14;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!mUnit)
|
||||
return;
|
||||
|
||||
if (ResourceMgrTask::instance())
|
||||
ResourceMgrTask::instance()->requestUnload(this);
|
||||
}
|
||||
|
||||
} // namespace ksys::res
|
||||
|
|
|
|||
|
|
@ -30,6 +30,12 @@ public:
|
|||
_6 = 6,
|
||||
_7 = 7,
|
||||
_8 = 8,
|
||||
_9 = 9,
|
||||
_10 = 10,
|
||||
_11 = 11,
|
||||
_12 = 12,
|
||||
_13 = 13,
|
||||
_14 = 14,
|
||||
};
|
||||
|
||||
Handle();
|
||||
|
|
@ -51,6 +57,10 @@ public:
|
|||
private:
|
||||
enum class Flag : u8 {
|
||||
_1 = 0x1,
|
||||
_2 = 0x2,
|
||||
_4 = 0x4,
|
||||
_7 = 0x7,
|
||||
_8 = 0x8,
|
||||
};
|
||||
|
||||
sead::TypedBitFlag<Flag> mFlags = Flag::_1;
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ public:
|
|||
void addSExtensionPrefix(sead::StringBuilder& builder) const;
|
||||
s32 requestLoadForSync(Handle* handle, const sead::SafeString& path,
|
||||
const ILoadRequest& request);
|
||||
s32 requestUnload(Handle* handle, const sead::SafeString& path, const ILoadRequest& request);
|
||||
s32 requestUnload(Handle* handle);
|
||||
|
||||
void registerUnit(ResourceUnit* unit);
|
||||
void deregisterUnit(ResourceUnit* unit);
|
||||
|
|
|
|||
Loading…
Reference in New Issue