#include "task_runner_linux.h" #include namespace livekit_client_plugin { void TaskRunnerLinux::EnqueueTask(TaskClosure task) { { std::lock_guard lock(tasks_mutex_); tasks_.push(std::move(task)); } GMainContext* context = g_main_context_default(); if (context) { g_main_context_invoke( context, [](gpointer user_data) -> gboolean { TaskRunnerLinux* runner = static_cast(user_data); std::lock_guard lock(runner->tasks_mutex_); while (!runner->tasks_.empty()) { TaskClosure task = std::move(runner->tasks_.front()); runner->tasks_.pop(); task(); } return G_SOURCE_REMOVE; }, this); } } } // namespace livekit_client_plugin