Flutter iOS Embedder
FlutterFMLTaskRunner.mm
Go to the documentation of this file.
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 
6 
7 #include <utility>
8 
9 #include "flutter/fml/logging.h"
10 
11 @implementation FlutterFMLTaskRunner {
12  fml::RefPtr<fml::TaskRunner> _taskRunner;
13 }
14 
15 - (instancetype)initWithTaskRunner:(fml::RefPtr<fml::TaskRunner>)task_runner {
16  FML_DCHECK(task_runner);
17  if (self = [super init]) {
18  _taskRunner = std::move(task_runner);
19  }
20  return self;
21 }
22 
23 - (void)postTask:(void (^)(void))task {
24  FML_DCHECK(task);
25  _taskRunner->PostTask([task]() { task(); });
26 }
27 
28 - (void)runNowOrPostTask:(void (^)(void))task {
29  FML_DCHECK(task);
30  fml::TaskRunner::RunNowOrPostTask(_taskRunner, [task]() { task(); });
31 }
32 
33 - (void)postTaskWithDelay:(NSTimeInterval)delay task:(void (^)(void))task {
34  FML_DCHECK(task);
35  _taskRunner->PostDelayedTask([task]() { task(); }, fml::TimeDelta::FromSecondsF(delay));
36 }
37 
38 - (BOOL)runsTasksOnCurrentThread {
39  return _taskRunner->RunsTasksOnCurrentThread();
40 }
41 
42 - (fml::RefPtr<fml::TaskRunner>)taskRunner {
43  return _taskRunner;
44 }
45 
46 @end