| // Copyright 2013 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef FLUTTER_SHELL_PLATFORM_LINUX_FL_TASK_RUNNER_H_ |
| #define FLUTTER_SHELL_PLATFORM_LINUX_FL_TASK_RUNNER_H_ |
| |
| #include <glib-object.h> |
| |
| #include "flutter/shell/platform/embedder/embedder.h" |
| #include "flutter/shell/platform/linux/public/flutter_linux/fl_engine.h" |
| |
| G_BEGIN_DECLS |
| |
| G_DECLARE_FINAL_TYPE(FlTaskRunner, fl_task_runner, FL, TASK_RUNNER, GObject); |
| |
| /** |
| * fl_task_runner_new: |
| * @engine: the #FlEngine owning the task runner. |
| * |
| * Creates new task runner instance. |
| * |
| * Returns: an #FlTaskRunner. |
| */ |
| FlTaskRunner* fl_task_runner_new(FlEngine* engine); |
| |
| /** |
| * fl_task_runner_post_task: |
| * @task_runner: an #FlTaskRunner. |
| * @task: Flutter task being scheduled |
| * @target_time_nanos: absolute time in nanoseconds |
| * |
| * Posts a Flutter task to be executed on main thread. This function is thread |
| * safe and may be called from any thread. |
| */ |
| void fl_task_runner_post_task(FlTaskRunner* task_runner, |
| FlutterTask task, |
| uint64_t target_time_nanos); |
| |
| /** |
| * fl_task_runner_block_main_thread: |
| * @task_runner: an #FlTaskRunner. |
| * |
| * Blocks main thread until fl_task_runner_release_main_thread is called. |
| * While main thread is blocked tasks posted to #FlTaskRunner are executed as |
| * usual. |
| * Must be invoked on main thread. |
| */ |
| void fl_task_runner_block_main_thread(FlTaskRunner* task_runner); |
| |
| /** |
| * fl_task_runner_release_main_thread: |
| * @task_runner: an #FlTaskRunner. |
| * |
| * Unblocks main thread. This will resume normal processing of main loop. |
| * Can be invoked from any thread. |
| */ |
| void fl_task_runner_release_main_thread(FlTaskRunner* self); |
| |
| G_END_DECLS |
| |
| #endif // FLUTTER_SHELL_PLATFORM_LINUX_FL_TASK_RUNNER_H_ |