diff options
| author | Léo Lam <leo@leolam.fr> | 2020-09-20 17:59:41 +0200 |
|---|---|---|
| committer | Léo Lam <leo@leolam.fr> | 2020-09-22 18:43:03 +0200 |
| commit | 8756ccdd07c690e61f9896830ca8bec12d4cfee1 (patch) | |
| tree | 6c8ecf11d0a9792b655ead8d71a6db3cfef90178 /src/KingSystem/Utils/Thread | |
| parent | 5ac991b0e05026b5ae25bfb7541d085f8d7000a2 (diff) | |
ksys: Start adding OverlayArenaSystem
Diffstat (limited to 'src/KingSystem/Utils/Thread')
| -rw-r--r-- | src/KingSystem/Utils/Thread/Task.h | 4 | ||||
| -rw-r--r-- | src/KingSystem/Utils/Thread/TaskQueueBase.cpp | 6 | ||||
| -rw-r--r-- | src/KingSystem/Utils/Thread/TaskQueueBase.h | 4 |
3 files changed, 5 insertions, 9 deletions
diff --git a/src/KingSystem/Utils/Thread/Task.h b/src/KingSystem/Utils/Thread/Task.h index df54db8e..3f076d0b 100644 --- a/src/KingSystem/Utils/Thread/Task.h +++ b/src/KingSystem/Utils/Thread/Task.h @@ -131,7 +131,7 @@ protected: friend class TaskQueueBase; friend class TaskThread; - enum class Flag { + enum class Flag : u8 { DeleteDelegate = 0x1, DoNotDeleteDelegate = 0x2, NeedsToSignalEvent = 0x4, @@ -173,7 +173,7 @@ protected: } u8 mLaneId = 0; - sead::TypedBitFlag<Flag, u8> mFlags = Flag::DoNotDeleteDelegate; + sead::TypedBitFlag<Flag> mFlags = Flag::DoNotDeleteDelegate; bool mDelegateResult = false; TaskDelegate* mDelegate = nullptr; void* mUserData = nullptr; diff --git a/src/KingSystem/Utils/Thread/TaskQueueBase.cpp b/src/KingSystem/Utils/Thread/TaskQueueBase.cpp index 430fdbf2..b6303ccb 100644 --- a/src/KingSystem/Utils/Thread/TaskQueueBase.cpp +++ b/src/KingSystem/Utils/Thread/TaskQueueBase.cpp @@ -57,7 +57,6 @@ void TaskQueueBase::clear() { mQueueEmptyEvent.wait(); } -// NON_MATCHING: swapped operands for a csel. The arg.set_flag1 check looks suspicious. bool TaskQueueBase::init(const InitArg& arg) { if (arg.max_num_threads == 0) return false; @@ -65,10 +64,7 @@ bool TaskQueueBase::init(const InitArg& arg) { if (!mThreads.tryAllocBuffer(arg.max_num_threads, arg.heap)) return false; - if (!arg.enable_locks) - mFlags.reset(Flag::Lock); - else - mFlags.set(Flag::Lock); + mFlags.change(Flag::Lock, arg.enable_locks); if (arg.num_lanes <= 0 || arg.num_lanes > 0x100) return false; diff --git a/src/KingSystem/Utils/Thread/TaskQueueBase.h b/src/KingSystem/Utils/Thread/TaskQueueBase.h index 3d4b44cf..bdc7503f 100644 --- a/src/KingSystem/Utils/Thread/TaskQueueBase.h +++ b/src/KingSystem/Utils/Thread/TaskQueueBase.h @@ -88,7 +88,7 @@ public: void fetchTask(Task** out_task); protected: - enum class Flag { + enum class Flag : u8 { Lock = 0x1, PreventThreadPoolChanges = 0x2, }; @@ -145,7 +145,7 @@ protected: void notifyThreadsForNewTasks(); - sead::TypedBitFlag<Flag, u8> mFlags; + sead::TypedBitFlag<Flag> mFlags; sead::OffsetList<Task> mActiveTasks; sead::Buffer<Lane> mLanes; Event mQueueEmptyEvent; |
