ksys/res: Implement register/unregisterFactory

This commit is contained in:
Léo Lam 2021-04-26 18:23:16 +02:00
parent f8d110ce28
commit 92ed3dbddb
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
4 changed files with 27 additions and 4 deletions

View File

@ -93154,8 +93154,8 @@
0x000000710120727c,res::ResourceMgrTask::defragAllMemoryMgr,800,
0x000000710120759c,res::ResourceMgrTask::__auto7,20,_ZNK4ksys3res15ResourceMgrTask12isDefragDoneEv
0x00000071012075b0,res::ResourceMgrTask::getDefragProgress,104,_ZNK4ksys3res15ResourceMgrTask17getDefragProgressEv
0x0000007101207618,sub_7101207618,80,
0x0000007101207668,sub_7101207668,64,
0x0000007101207618,sub_7101207618,80,_ZN4ksys3res15ResourceMgrTask15registerFactoryEPN4sead15ResourceFactoryERKNS2_14SafeStringBaseIcEE
0x0000007101207668,sub_7101207668,64,_ZN4ksys3res15ResourceMgrTask17unregisterFactoryEPN4sead15ResourceFactoryE
0x00000071012076a8,res::ResourceMgrTask::getCacheIdx,956,
0x0000007101207a64,stringPathManipulationStuff,1284,
0x0000007101207f68,sub_7101207F68,680,_ZNK4sead8ObjArrayINS_14SafeStringBaseIcEEE12binarySearchEPKS2_?
@ -93317,8 +93317,8 @@
0x00000071012130c8,sub_71012130C8,8,_ZN4ksys3res19ResourceUnitMapNode6erase_Ev
0x00000071012130d0,sub_71012130D0,116,
0x0000007101213144,isResourceMgrOom,16,
0x0000007101213154,res::registerEntryFactory,32,
0x0000007101213174,res::unregisterEntryFactory,24,
0x0000007101213154,res::registerEntryFactory,32,_ZN4ksys3res20registerEntryFactoryEPNS0_16EntryFactoryBaseERKN4sead14SafeStringBaseIcEE
0x0000007101213174,res::unregisterEntryFactory,24,_ZN4ksys3res22unregisterEntryFactoryEPNS0_16EntryFactoryBaseE
0x000000710121318c,res::setResourceMgrPack,24,
0x00000071012131a4,res::clearAllCaches,16,
0x00000071012131b4,res::clearAllCaches2,16,

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

View File

@ -150,6 +150,17 @@ f32 ResourceMgrTask::getDefragProgress() const {
return f32(_4cc) / f32(_4c8);
}
void ResourceMgrTask::registerFactory(sead::ResourceFactory* factory,
const sead::SafeString& name) {
auto lock = sead::makeScopedLock(mFactoryCS);
sead::ResourceMgr::instance()->registerFactory(factory, name);
}
void ResourceMgrTask::unregisterFactory(sead::ResourceFactory* factory) {
auto lock = sead::makeScopedLock(mFactoryCS);
sead::ResourceMgr::instance()->unregisterFactory(factory);
}
void ResourceMgrTask::cancelTasks() {
stubbedLogFunction();
stubbedLogFunction();

View File

@ -123,6 +123,9 @@ public:
bool isDefragDone() const;
f32 getDefragProgress() const;
void registerFactory(sead::ResourceFactory* factory, const sead::SafeString& name);
void unregisterFactory(sead::ResourceFactory* factory);
s32 getCacheIdx(const sead::SafeString& path) const;
void cancelTasks();

View File

@ -1,4 +1,5 @@
#include "KingSystem/Resource/resSystem.h"
#include "KingSystem/Resource/resEntryFactory.h"
#include "KingSystem/Resource/resResourceMgrTask.h"
namespace ksys::res {
@ -7,6 +8,14 @@ bool stubbedLogFunction() {
return true;
}
void registerEntryFactory(EntryFactoryBase* factory, const sead::SafeString& name) {
ResourceMgrTask::instance()->registerFactory(factory, name);
}
void unregisterEntryFactory(EntryFactoryBase* factory) {
ResourceMgrTask::instance()->unregisterFactory(factory);
}
bool isHostPath(const sead::SafeString& path) {
return ResourceMgrTask::instance()->isHostPath(path);
}