mirror of https://github.com/zeldaret/botw.git
ksys/res: Add ControlTask, TaskRequest
This commit is contained in:
parent
b1926813b7
commit
ba5a3c642d
|
|
@ -100,7 +100,7 @@
|
|||
0x0000007100000c20,sub_7100000C20,140,
|
||||
0x0000007100000cac,sub_7100000CAC,140,
|
||||
0x0000007100000d38,sub_7100000D38,140,
|
||||
0x0000007100000dc4,sub_7100000DC4,12,
|
||||
0x0000007100000dc4,sub_7100000DC4,12,_ZNK4sead15RuntimeTypeInfo4Root9isDerivedEPKNS0_9InterfaceE
|
||||
0x0000007100000f44,sub_7100000F44,140,
|
||||
0x0000007100001028,nullsub_25,4,
|
||||
0x000000710000103c,sub_710000103C,20,
|
||||
|
|
@ -56386,7 +56386,7 @@
|
|||
0x00000071009ccbf0,sub_71009CCBF0,204,
|
||||
0x00000071009cccbc,sub_71009CCCBC,92,
|
||||
0x00000071009ccd18,sub_71009CCD18,140,
|
||||
0x00000071009ccda4,sub_71009CCDA4,140,
|
||||
0x00000071009ccda4,sub_71009CCDA4,140,_ZNK4sead15RuntimeTypeInfo6DeriveIN4ksys4util8TaskDataEE9isDerivedEPKNS0_9InterfaceE
|
||||
0x00000071009cce30,sub_71009CCE30,52,
|
||||
0x00000071009cce64,sub_71009CCE64,92,
|
||||
0x00000071009ccec0,sub_71009CCEC0,48,
|
||||
|
|
@ -90862,7 +90862,7 @@
|
|||
0x000000710120464c,res::ResourceMgrTask::prepare,4876,
|
||||
0x0000007101205958,res::ResourceMgrTask::insertOverlayArena,136,
|
||||
0x00000071012059e0,sub_71012059E0,720,
|
||||
0x0000007101205cb0,startResourceLoadingThread,236,
|
||||
0x0000007101205cb0,startResourceLoadingThread,236,_ZN4ksys3res15ResourceMgrTask25makeResourceLoadingThreadEPN4sead4HeapEb
|
||||
0x0000007101205d9c,WorkerThread1::init,224,
|
||||
0x0000007101205e7c,WorkerThread2::init,224,
|
||||
0x0000007101205f5c,ResourceBinder::callReadFilePathAndMakeHeapAndMaybePrepareLoad,8,
|
||||
|
|
@ -93175,13 +93175,13 @@
|
|||
0x00000071012badd4,sub_71012BADD4,8,
|
||||
0x00000071012baddc,sub_71012BADDC,92,
|
||||
0x00000071012bae38,sub_71012BAE38,8,
|
||||
0x00000071012bafb4,EventResourceLoadArg::ctor,156,
|
||||
0x00000071012bb050,EventResourceLoadArg::dtor,72,
|
||||
0x00000071012bb098,sub_71012BB098,20,
|
||||
0x00000071012bb0ac,EventResourceLoadArg::dtorDelete,80,
|
||||
0x00000071012bb0fc,EventResourceLoadArg::b,368,
|
||||
0x00000071012bb26c,EventResourceLoadArg::null1,4,
|
||||
0x00000071012bb270,EventResourceLoadArg::c,32,
|
||||
0x00000071012bafb4,EventResourceLoadArg::ctor,156,_ZN4ksys3res11ControlTaskC1EPN4sead4HeapE
|
||||
0x00000071012bb050,EventResourceLoadArg::dtor,72,_ZN4ksys3res11ControlTaskD2Ev
|
||||
0x00000071012bb098,sub_71012BB098,20,_ZN4ksys3res15ControlTaskDataD2Ev
|
||||
0x00000071012bb0ac,EventResourceLoadArg::dtorDelete,80,_ZN4ksys3res11ControlTaskD0Ev
|
||||
0x00000071012bb0fc,EventResourceLoadArg::b,368,_ZN4ksys3res11ControlTask12prepareImpl_EPNS_4util11TaskRequestE
|
||||
0x00000071012bb26c,EventResourceLoadArg::null1,4,_ZN4ksys3res11ControlTask6onRun_Ev
|
||||
0x00000071012bb270,EventResourceLoadArg::c,32,_ZN4ksys3res11ControlTask14preRemoveImpl_Ev
|
||||
0x00000071012bb290,sub_71012BB290,156,
|
||||
0x00000071012bb32c,sub_71012BB32C,20,
|
||||
0x00000071012bb340,nullsub_4782,4,
|
||||
|
|
@ -93189,13 +93189,13 @@
|
|||
0x00000071012bb378,sub_71012BB378,260,
|
||||
0x00000071012bb47c,nullsub_4783,4,
|
||||
0x00000071012bb480,sub_71012BB480,32,
|
||||
0x00000071012bb4a0,EventResourceLoadArg::rtti1,288,
|
||||
0x00000071012bb5c0,EventResourceLoadArg::rtti2,92,
|
||||
0x00000071012bb4a0,EventResourceLoadArg::rtti1,288,_ZNK4ksys3res11ControlTask27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
|
||||
0x00000071012bb5c0,EventResourceLoadArg::rtti2,92,_ZNK4ksys3res11ControlTask18getRuntimeTypeInfoEv
|
||||
0x00000071012bb61c,sub_71012BB61C,288,
|
||||
0x00000071012bb73c,sub_71012BB73C,92,
|
||||
0x00000071012bb798,sub_71012BB798,204,
|
||||
0x00000071012bb864,sub_71012BB864,92,
|
||||
0x00000071012bb8c0,sub_71012BB8C0,52,
|
||||
0x00000071012bb798,sub_71012BB798,204,_ZNK4ksys3res15ControlTaskData27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
|
||||
0x00000071012bb864,sub_71012BB864,92,_ZNK4ksys3res15ControlTaskData18getRuntimeTypeInfoEv
|
||||
0x00000071012bb8c0,sub_71012BB8C0,52,_ZN4ksys3res15ControlTaskDataD0Ev
|
||||
0x00000071012bb8f4,sub_71012BB8F4,204,
|
||||
0x00000071012bb9c0,sub_71012BB9C0,92,
|
||||
0x00000071012bba1c,j__ZdlPv_1295,4,
|
||||
|
|
|
|||
|
Can't render this file because it is too large.
|
|
|
@ -94,9 +94,15 @@ target_sources(uking PRIVATE
|
|||
resHandle.h
|
||||
resLoadRequest.cpp
|
||||
resLoadRequest.h
|
||||
resControlTask.cpp
|
||||
resControlTask.h
|
||||
resOffsetReadFileDevice.cpp
|
||||
resOffsetReadFileDevice.h
|
||||
resResourceMgrTask.cpp
|
||||
resResourceMgrTask.h
|
||||
resSystem.h
|
||||
resTaskRequest.cpp
|
||||
resTaskRequest.h
|
||||
resUnit.cpp
|
||||
resUnit.h
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,30 @@
|
|||
#include "KingSystem/Resource/resControlTask.h"
|
||||
#include "KingSystem/Resource/resSystem.h"
|
||||
#include "KingSystem/Resource/resTaskRequest.h"
|
||||
|
||||
namespace ksys::res {
|
||||
|
||||
ControlTask::ControlTask(sead::Heap* heap) : util::ManagedTask(heap) {}
|
||||
|
||||
void ControlTask::onRun_() {}
|
||||
|
||||
void ControlTask::prepareImpl_(util::TaskRequest* req_) {
|
||||
auto* req = static_cast<TaskRequest*>(req_);
|
||||
|
||||
mData.mHasResLoadReq = req->mHasResLoadReq;
|
||||
mData.mPackResUnit = req->mPackResUnit;
|
||||
mData.mResHandle = req->mResHandle;
|
||||
mData.mResPath = req->mResPath;
|
||||
mData.mResLoadReq = req->mResLoadReq;
|
||||
mData.mResLoadReq.mPath = mData.mResPath;
|
||||
|
||||
if (getUserData() == nullptr)
|
||||
setUserData(&mData);
|
||||
}
|
||||
|
||||
void ControlTask::preRemoveImpl_() {
|
||||
if (returnFalse())
|
||||
stubbedLogFunction();
|
||||
}
|
||||
|
||||
} // namespace ksys::res
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
#pragma once
|
||||
|
||||
#include <prim/seadSafeString.h>
|
||||
#include "KingSystem/Resource/resLoadRequest.h"
|
||||
#include "KingSystem/Utils/Thread/ManagedTask.h"
|
||||
#include "KingSystem/Utils/Thread/TaskData.h"
|
||||
#include "KingSystem/Utils/Types.h"
|
||||
|
||||
namespace ksys::res {
|
||||
|
||||
class Handle;
|
||||
class ResourceUnit;
|
||||
|
||||
class ControlTaskData : public util::TaskData {
|
||||
SEAD_RTTI_OVERRIDE(ControlTaskData, util::TaskData)
|
||||
public:
|
||||
virtual ~ControlTaskData() = default;
|
||||
|
||||
bool mHasResLoadReq = false;
|
||||
ResourceUnit* mPackResUnit = nullptr;
|
||||
Handle* mResHandle = nullptr;
|
||||
sead::FixedSafeString<128> mResPath;
|
||||
LoadRequest mResLoadReq;
|
||||
};
|
||||
KSYS_CHECK_SIZE_NX150(ControlTaskData, 0x138);
|
||||
|
||||
class ControlTask : public util::ManagedTask {
|
||||
SEAD_RTTI_OVERRIDE(ControlTask, util::ManagedTask)
|
||||
public:
|
||||
explicit ControlTask(sead::Heap* heap);
|
||||
|
||||
private:
|
||||
void onRun_() override;
|
||||
void prepareImpl_(util::TaskRequest* req) override;
|
||||
void preRemoveImpl_() override;
|
||||
|
||||
ControlTaskData mData;
|
||||
};
|
||||
KSYS_CHECK_SIZE_NX150(ControlTask, 0x1f8);
|
||||
|
||||
} // namespace ksys::res
|
||||
|
|
@ -1 +1,21 @@
|
|||
#include "KingSystem/Resource/resResourceMgrTask.h"
|
||||
#include <thread/seadThreadUtil.h>
|
||||
#include "KingSystem/Utils/Thread/GameTaskThread.h"
|
||||
#include "KingSystem/Utils/Thread/TaskThread.h"
|
||||
|
||||
namespace ksys::res {
|
||||
|
||||
util::TaskThread* ResourceMgrTask::makeResourceLoadingThread(sead::Heap* heap,
|
||||
bool use_game_task_thread) {
|
||||
if (use_game_task_thread) {
|
||||
return new (heap) util::GameTaskThread(
|
||||
"Resource Loading", heap, sead::ThreadUtil::ConvertPrioritySeadToPlatform(19),
|
||||
sead::MessageQueue::BlockType::Blocking, 0x7fffffff, 0xfa000, 32);
|
||||
}
|
||||
|
||||
return new (heap) util::TaskThread(
|
||||
"Resource Loading", heap, sead::ThreadUtil::ConvertPrioritySeadToPlatform(19),
|
||||
sead::MessageQueue::BlockType::Blocking, 0x7fffffff, 0xa000, 32);
|
||||
}
|
||||
|
||||
} // namespace ksys::res
|
||||
|
|
|
|||
|
|
@ -1,8 +1,16 @@
|
|||
#pragma once
|
||||
|
||||
namespace sead {
|
||||
class Heap;
|
||||
}
|
||||
|
||||
namespace ksys {
|
||||
class OverlayArena;
|
||||
|
||||
namespace util {
|
||||
class TaskThread;
|
||||
}
|
||||
} // namespace ksys
|
||||
|
||||
namespace ksys::res {
|
||||
|
||||
|
|
@ -14,6 +22,8 @@ public:
|
|||
void insertOverlayArena(OverlayArena* arena);
|
||||
OverlayArena* getSomeArena() const;
|
||||
|
||||
util::TaskThread* makeResourceLoadingThread(sead::Heap* heap, bool use_game_task_thread);
|
||||
|
||||
private:
|
||||
static ResourceMgrTask* sInstance;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
#include "resTaskRequest.h"
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
#pragma once
|
||||
|
||||
#include "KingSystem/Resource/resLoadRequest.h"
|
||||
#include "KingSystem/Utils/Thread/Task.h"
|
||||
#include "KingSystem/Utils/Types.h"
|
||||
|
||||
namespace ksys::res {
|
||||
|
||||
class Handle;
|
||||
class ResourceUnit;
|
||||
|
||||
class TaskRequest : public util::TaskRequest {
|
||||
SEAD_RTTI_OVERRIDE(TaskRequest, util::TaskRequest)
|
||||
public:
|
||||
TaskRequest() = default;
|
||||
|
||||
bool mHasResLoadReq = false;
|
||||
ResourceUnit* mPackResUnit = nullptr;
|
||||
Handle* mResHandle = nullptr;
|
||||
sead::FixedSafeString<128> mResPath;
|
||||
LoadRequest mResLoadReq;
|
||||
};
|
||||
KSYS_CHECK_SIZE_NX150(TaskRequest, 0x180);
|
||||
|
||||
} // namespace ksys::res
|
||||
|
|
@ -9,6 +9,7 @@ target_sources(uking PRIVATE
|
|||
Thread/ManagedTaskHandle.h
|
||||
Thread/Task.cpp
|
||||
Thread/Task.h
|
||||
Thread/TaskData.h
|
||||
Thread/TaskMgr.cpp
|
||||
Thread/TaskMgr.h
|
||||
Thread/TaskQueueBase.cpp
|
||||
|
|
|
|||
|
|
@ -73,6 +73,8 @@ KSYS_CHECK_SIZE_NX150(TaskDelegateSetter, 0x10);
|
|||
class TaskRequest {
|
||||
SEAD_RTTI_BASE(TaskRequest)
|
||||
public:
|
||||
// TODO: initialize the members
|
||||
TaskRequest() = default;
|
||||
virtual ~TaskRequest() = default;
|
||||
|
||||
bool mHasHandle;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,11 @@
|
|||
#pragma once
|
||||
|
||||
#include <prim/seadRuntimeTypeInfo.h>
|
||||
|
||||
namespace ksys::util {
|
||||
|
||||
class TaskData {
|
||||
SEAD_RTTI_BASE(TaskData)
|
||||
};
|
||||
|
||||
} // namespace ksys::util
|
||||
Loading…
Reference in New Issue