FastLED 3.10.8
Loading...
Searching...
No Matches

◆ add_task()

int fl::task::Scheduler::add_task ( Handle t)

Definition at line 31 of file scheduler.cpp.hpp.

31 {
32 if (t.is_valid()) {
33 for (const Handle& existing : mTasks) {
34 if (existing.mImpl == t.mImpl) {
35 return existing._id();
36 }
37 }
38 int task_id = mNextTaskId.fetch_add(1);
39 t._set_id(task_id);
40 const bool is_frame_task = t._type() == TaskType::kBeforeFrame ||
41 t._type() == TaskType::kAfterFrame;
42 mTasks.push_back(fl::move(t));
43 if (is_frame_task && !mFrameListenerRegistered) {
44 // The dedicated final listener works even where the general
45 // EngineEvents listener list is disabled for memory reasons.
48 }
49 return task_id;
50 }
51 return 0; // Invalid task
52}
static void setFrameTaskListener(Listener *listener) FL_NO_EXCEPT
fl::vector< Handle > mTasks
Definition scheduler.h:46
fl::atomic< int > mNextTaskId
Definition scheduler.h:49
bool mFrameListenerRegistered
Definition scheduler.h:53
constexpr remove_reference< T >::type && move(T &&t) FL_NO_EXCEPT
Definition move.h:30
@ kBeforeFrame
Runs immediately before each FastLED frame is rendered.
Definition task.h:120
@ kAfterFrame
Runs immediately after each FastLED frame is rendered.
Definition task.h:121

References fl::FL_NO_EXCEPT, fl::task::kAfterFrame, fl::task::kBeforeFrame, mFrameListenerRegistered, mNextTaskId, fl::adl_barrier::move(), mTasks, fl::EngineEvents::setFrameTaskListener(), and fl::t.

Referenced by fl::detail::AsyncLoggerServiceTask::AsyncLoggerServiceTask(), and fl::task::Handle::then().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: