diff options
Diffstat (limited to 'src/KingSystem/Utils/Thread/Task.cpp')
| -rw-r--r-- | src/KingSystem/Utils/Thread/Task.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/KingSystem/Utils/Thread/Task.cpp b/src/KingSystem/Utils/Thread/Task.cpp index 7ab00b55..7a3c3cff 100644 --- a/src/KingSystem/Utils/Thread/Task.cpp +++ b/src/KingSystem/Utils/Thread/Task.cpp @@ -84,11 +84,8 @@ bool Task::submitRequest(TaskRequest& request) { request.mQueue = mQueue; } mUserData = request.mUserData; - if (auto* delegate = request.mDelegate) { - deleteDelegate_(); - mFlags.set(Flag::DoNotDeleteDelegate); - mDelegate = delegate; - } + if (request.mDelegate) + setDelegateInternal_(request.mDelegate); mRemoveCallback = request.mRemoveCallback; mPostRunCallback = request.mPostRunCallback; mName = request.mName; @@ -126,6 +123,17 @@ bool Task::canSubmitRequest() const { return run_finished_on_current_thread || cond2; } +void Task::setUserData(void* user_data) { + mUserData = user_data; +} + +bool Task::setDelegateInternal_(TaskDelegate* delegate) { + deleteDelegate_(); + mFlags.set(Flag::DoNotDeleteDelegate); + mDelegate = delegate; + return delegate != nullptr; +} + void Task::processOnCurrentThreadDirectly(TaskThread* thread) { { TaskQueueLock lock{thread}; |
