1*ab11e3c9SKudo Chien #include "Scheduler.h"
2*ab11e3c9SKudo Chien 
3*ab11e3c9SKudo Chien namespace reanimated {
4*ab11e3c9SKudo Chien 
scheduleOnUI(std::function<void ()> job)5*ab11e3c9SKudo Chien void Scheduler::scheduleOnUI(std::function<void()> job) {
6*ab11e3c9SKudo Chien   uiJobs.push(std::move(job));
7*ab11e3c9SKudo Chien }
8*ab11e3c9SKudo Chien 
scheduleOnJS(std::function<void ()> job)9*ab11e3c9SKudo Chien void Scheduler::scheduleOnJS(std::function<void()> job) {
10*ab11e3c9SKudo Chien   jsCallInvoker_->invokeAsync(std::move(job));
11*ab11e3c9SKudo Chien }
12*ab11e3c9SKudo Chien 
triggerUI()13*ab11e3c9SKudo Chien void Scheduler::triggerUI() {
14*ab11e3c9SKudo Chien   scheduledOnUI = false;
15*ab11e3c9SKudo Chien   while (uiJobs.getSize()) {
16*ab11e3c9SKudo Chien     auto job = uiJobs.pop();
17*ab11e3c9SKudo Chien     job();
18*ab11e3c9SKudo Chien   }
19*ab11e3c9SKudo Chien }
20*ab11e3c9SKudo Chien 
setJSCallInvoker(std::shared_ptr<facebook::react::CallInvoker> jsCallInvoker)21*ab11e3c9SKudo Chien void Scheduler::setJSCallInvoker(
22*ab11e3c9SKudo Chien     std::shared_ptr<facebook::react::CallInvoker> jsCallInvoker) {
23*ab11e3c9SKudo Chien   jsCallInvoker_ = jsCallInvoker;
24*ab11e3c9SKudo Chien }
25*ab11e3c9SKudo Chien 
setRuntimeManager(std::shared_ptr<RuntimeManager> runtimeManager)26*ab11e3c9SKudo Chien void Scheduler::setRuntimeManager(
27*ab11e3c9SKudo Chien     std::shared_ptr<RuntimeManager> runtimeManager) {
28*ab11e3c9SKudo Chien   this->runtimeManager = runtimeManager;
29*ab11e3c9SKudo Chien }
30*ab11e3c9SKudo Chien 
~Scheduler()31*ab11e3c9SKudo Chien Scheduler::~Scheduler() {}
32*ab11e3c9SKudo Chien 
Scheduler()33*ab11e3c9SKudo Chien Scheduler::Scheduler() {
34*ab11e3c9SKudo Chien   this->scheduledOnUI = false;
35*ab11e3c9SKudo Chien }
36*ab11e3c9SKudo Chien 
37*ab11e3c9SKudo Chien } // namespace reanimated
38