12std::atomic_intptr_t EmbedderTaskRunner::next_unique_id_ = 0;
15 size_t embedder_identifier)
17 embedder_identifier_(embedder_identifier),
18 dispatch_table_(
std::move(table)),
20 unique_id_(next_unique_id_++) {
31 return embedder_identifier_;
38void EmbedderTaskRunner::PostTaskForTime(
const fml::closure& task,
48 std::scoped_lock lock(tasks_mutex_);
49 baton = ++last_baton_;
50 pending_tasks_[baton] = task;
56void EmbedderTaskRunner::PostDelayedTask(
const fml::closure& task,
61bool EmbedderTaskRunner::RunsTasksOnCurrentThread() {
69 std::scoped_lock lock(tasks_mutex_);
70 auto found = pending_tasks_.find(baton);
71 if (found == pending_tasks_.end()) {
72 FML_LOG(ERROR) <<
"Embedder attempted to post an unknown task.";
76 pending_tasks_.erase(found);
88 return placeholder_id_;
bool PostTask(uint64_t baton)
size_t GetEmbedderIdentifier() const
The unique identifier provided by the embedder for the task runner. Embedders whose dispatch tables s...
EmbedderTaskRunner(DispatchTable table, size_t embedder_identifier)
Create a task runner with a dispatch table for delegation of task runner responsibility to the embedd...
~EmbedderTaskRunner() override
#define FML_LOG(severity)
#define FML_DCHECK(condition)
std::function< void()> closure
std::function< void(EmbedderTaskRunner *task_runner, uint64_t task_baton, fml::TimePoint target_time)> post_task_callback
std::function< bool(void)> runs_task_on_current_thread_callback
std::function< void()> destruction_callback
Performs user-designated cleanup on destruction.