Trigger event thread only if we need execute process 22/300322/1
authorEunki Hong <eunkiki.hong@samsung.com>
Sat, 21 Oct 2023 15:12:28 +0000 (00:12 +0900)
committerEunki Hong <eunkiki.hong@samsung.com>
Sat, 21 Oct 2023 15:12:28 +0000 (00:12 +0900)
Sometimes, Canceled running task can wake up main thread.
This logic might crush some toolkit UTC.
And also it is useless.

We already have some logics to avoid too-much-cached cancel
tasks. So now we don't need to trigger event thread for
canceled tasks, and flush.

Change-Id: Ib4a62757260cc459941f8e153e37eab70f5f885a
Signed-off-by: Eunki Hong <eunkiki.hong@samsung.com>
dali/internal/system/common/async-task-manager-impl.cpp

index 36425fc..9fcf9b4 100644 (file)
@@ -598,7 +598,7 @@ void AsyncTaskManager::CompleteTask(AsyncTaskPtr&& task)
 
   if(task)
   {
-    bool needTrigger = (task->GetCallbackInvocationThread() == AsyncTask::ThreadType::MAIN_THREAD);
+    bool needTrigger = false;
 
     // Lock while check validation of task.
     {
@@ -654,6 +654,8 @@ void AsyncTaskManager::CompleteTask(AsyncTaskPtr&& task)
 
           const bool callbackRequired = notify && (task->GetCallbackInvocationThread() == AsyncTask::ThreadType::MAIN_THREAD);
 
+          needTrigger |= callbackRequired;
+
           DALI_LOG_INFO(gAsyncTasksManagerLogFilter, Debug::Verbose, "Running -> Completed [%p] (callback required? : %d)\n", task.Get(), callbackRequired);
 
           auto completedIter = mCompletedTasks.insert(mCompletedTasks.end(), std::make_pair(task, callbackRequired ? CompletedTaskState::REQUIRE_CALLBACK : CompletedTaskState::SKIP_CALLBACK));