mirror of
https://github.com/zeldaret/botw
synced 2026-06-25 01:12:12 -04:00
ksys/res: Start adding ResourceMgrTask
Adds data members and simple functions.
This commit is contained in:
@@ -1,10 +1,81 @@
|
||||
#include "KingSystem/Resource/resResourceMgrTask.h"
|
||||
#include <framework/seadHeapPolicies.h>
|
||||
#include <framework/seadTaskID.h>
|
||||
#include <thread/seadThreadUtil.h>
|
||||
#include "KingSystem/Resource/resCompactedHeap.h"
|
||||
#include "KingSystem/Resource/resEntryFactory.h"
|
||||
#include "KingSystem/Resource/resTextureHandleList.h"
|
||||
#include "KingSystem/Resource/resTextureHandleMgr.h"
|
||||
#include "KingSystem/Utils/SafeDelete.h"
|
||||
#include "KingSystem/Utils/Thread/GameTaskThread.h"
|
||||
#include "KingSystem/Utils/Thread/TaskMgr.h"
|
||||
#include "KingSystem/Utils/Thread/TaskThread.h"
|
||||
|
||||
namespace ksys::res {
|
||||
|
||||
void ResourceMgrTask::setInstance(ResourceMgrTask* task) {
|
||||
if (!sInstance) {
|
||||
sInstance = task;
|
||||
task->mInstancePtrClearer.mClearOnDestruction = true;
|
||||
}
|
||||
}
|
||||
|
||||
ResourceMgrTask::ResourceMgrTask(const sead::TaskConstructArg& arg)
|
||||
: sead::CalculateTask(arg, "res::ResourceMgrTask"),
|
||||
mSzsDecompressorCS(arg.heap_array->getPrimaryHeap()),
|
||||
mCounter(arg.heap_array->getPrimaryHeap()), mTask(arg.heap_array->getPrimaryHeap()) {
|
||||
mArenas.initOffset(OverlayArena::getListNodeOffset());
|
||||
mUnits.initOffset(ResourceUnit::getResMgrUnitListNodeOffset());
|
||||
mSomeList.initOffset(0x188); // TODO: replace this with a "get offset" call
|
||||
mSystemCalcFn.bind(this, &ResourceMgrTask::callSystemCalc_);
|
||||
mFileDevicePrefixes.initOffset(FileDevicePrefix::getListNodeOffset());
|
||||
}
|
||||
|
||||
ResourceMgrTask::~ResourceMgrTask() {
|
||||
util::safeDelete(mTexHandleList);
|
||||
util::safeDelete(mTexHandleMgr);
|
||||
util::safeDeleteThread(mCompactionThread);
|
||||
|
||||
if (mCompactedHeapMip0) {
|
||||
mCompactedHeapMip0->destroy();
|
||||
util::safeDeleteArray(mCompactedHeapMip0Buffer);
|
||||
}
|
||||
|
||||
if (mCompactedHeapMain) {
|
||||
mCompactedHeapMain->destroy();
|
||||
util::safeDeleteArray(mCompactedHeapMainBuffer);
|
||||
mCompactedHeapMainSeadHeap->destroy();
|
||||
}
|
||||
|
||||
util::safeDeleteArray(mCompactedHeapMainBuffer2);
|
||||
util::safeDeleteArray(mOffsetReadBuf);
|
||||
mExtensions2.freeBuffer();
|
||||
mExtensions1.freeBuffer();
|
||||
|
||||
util::safeDeleteThread(mMovableMemoryThread);
|
||||
util::safeDeleteThread(mResourceMemoryThread);
|
||||
util::safeDeleteThread(mResourceControlThread);
|
||||
util::safeDeleteThread(mResourceLoadingThread);
|
||||
util::safeDelete(mTask3);
|
||||
util::safeDelete(mTask2);
|
||||
util::safeDelete(mTask1);
|
||||
util::safeDelete(mControlTask);
|
||||
|
||||
if (mResourceMemoryTaskMgr) {
|
||||
mResourceMemoryTaskMgr->finalize();
|
||||
util::safeDelete(mResourceMemoryTaskMgr);
|
||||
}
|
||||
|
||||
if (mResourceControlTaskMgr) {
|
||||
mResourceControlTaskMgr->finalize();
|
||||
util::safeDelete(mResourceControlTaskMgr);
|
||||
}
|
||||
|
||||
util::safeDelete(mEntryFactoryBase);
|
||||
|
||||
mResSystemHeap->destroy();
|
||||
}
|
||||
|
||||
util::TaskThread* ResourceMgrTask::makeResourceLoadingThread(sead::Heap* heap,
|
||||
bool use_game_task_thread) {
|
||||
if (use_game_task_thread) {
|
||||
|
||||
Reference in New Issue
Block a user