summaryrefslogtreecommitdiff
path: root/src/KingSystem/Utils/Thread/Task.cpp
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2020-09-26 16:55:44 +0200
committerLéo Lam <leo@leolam.fr>2020-09-26 17:04:43 +0200
commitb2ce4e32ea929d3c526bd432febc23c84b9814a4 (patch)
tree309618c90ad01a2524eee9e0959b0f7e1ce77ac3 /src/KingSystem/Utils/Thread/Task.cpp
parentcdf27ca63c7a3450e4de44764cce40cecb7c062a (diff)
ksys/util: Add Task functions that were missed because of IDA's bad tail detection
Diffstat (limited to 'src/KingSystem/Utils/Thread/Task.cpp')
-rw-r--r--src/KingSystem/Utils/Thread/Task.cpp18
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};