1 // Copyright 2013 The Flutter Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 // 2021.4.30 platform task runner adapt ohos. 5 // Copyright (c) 2021 Huawei Device Co., Ltd. All rights reserved. 6 7 #ifndef FLUTTER_SHELL_PLATFORM_OHOS_PLATFORM_TASK_RUNNER_ADAPTER_H 8 #define FLUTTER_SHELL_PLATFORM_OHOS_PLATFORM_TASK_RUNNER_ADAPTER_H 9 10 #include "event_handler.h" 11 #include "event_runner.h" 12 13 #include "flutter/fml/message_loop_impl.h" 14 #include "flutter/fml/message_loop_task_queues.h" 15 16 namespace flutter { 17 18 class PlatformTaskRunnerAdapter : public fml::TaskRunner { 19 public: 20 explicit PlatformTaskRunnerAdapter(bool useCurrentEventRunner); 21 22 void PostTask(fml::closure task) override; 23 24 void PostTaskForTime(fml::closure task, fml::TimePoint target_time) override; 25 26 void PostDelayedTask(fml::closure task, fml::TimeDelta delay) override; 27 28 bool RunsTasksOnCurrentThread() override; 29 30 fml::TaskQueueId GetTaskQueueId() override; 31 32 static fml::RefPtr<fml::TaskRunner> CurrentTaskRunner(bool useCurrentEventRunner = false); 33 34 private: 35 static fml::RefPtr<fml::TaskRunner> taskRunner_; 36 37 std::shared_ptr<OHOS::AppExecFwk::EventHandler> eventHandler_; 38 std::shared_ptr<OHOS::AppExecFwk::EventRunner> eventRunner_; 39 }; 40 41 } // namespace flutter 42 43 #endif // FLUTTER_SHELL_PLATFORM_OHOS_PLATFORM_TASK_RUNNER_ADAPTER_H