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