// 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_WINDOWS_WINRT_TASK_RUNNER_H_ #define FLUTTER_SHELL_PLATFORM_WINDOWS_WINRT_TASK_RUNNER_H_ #include #include #include #include #include #include "flutter/shell/platform/embedder/embedder.h" #include "flutter/shell/platform/windows/task_runner.h" namespace flutter { // A custom task runner that uses a CoreDispatcher to schedule // flutter tasks. class TaskRunnerWinUwp : public TaskRunner { public: TaskRunnerWinUwp(DWORD main_thread_id, const TaskExpiredCallback& on_task_expired); ~TaskRunnerWinUwp(); TaskRunnerWinUwp(const TaskRunnerWinUwp&) = delete; TaskRunnerWinUwp& operator=(const TaskRunnerWinUwp&) = delete; // |TaskRunner| bool RunsTasksOnCurrentThread() const override; // |TaskRunner| void PostFlutterTask(FlutterTask flutter_task, uint64_t flutter_target_time_nanos) override; // |TaskRunner| void PostTask(TaskClosure task) override; private: DWORD main_thread_id_; TaskExpiredCallback on_task_expired_; winrt::Windows::UI::Core::CoreDispatcher dispatcher_{nullptr}; }; } // namespace flutter #endif // FLUTTER_SHELL_PLATFORM_WINDOWS_WINRT_TASK_RUNNER_H_