1#import <RNReanimated/REAIOSScheduler.h> 2#import <RNReanimated/RuntimeManager.h> 3 4namespace reanimated { 5 6using namespace facebook; 7using namespace react; 8 9REAIOSScheduler::REAIOSScheduler(std::shared_ptr<CallInvoker> jsInvoker) 10{ 11 this->jsCallInvoker_ = jsInvoker; 12} 13 14void REAIOSScheduler::scheduleOnUI(std::function<void()> job) 15{ 16 if (runtimeManager.lock() == nullptr) { 17 return; 18 } 19 20 if ([NSThread isMainThread]) { 21 if (runtimeManager.lock()) { 22 job(); 23 } 24 return; 25 } 26 27 Scheduler::scheduleOnUI(job); 28 if ([NSThread isMainThread]) { 29 if (runtimeManager.lock()) { 30 triggerUI(); 31 } 32 return; 33 } 34 35 if (!this->scheduledOnUI) { 36 __block std::weak_ptr<RuntimeManager> blockRuntimeManager = runtimeManager; 37 38 dispatch_async(dispatch_get_main_queue(), ^{ 39 if (blockRuntimeManager.lock()) { 40 triggerUI(); 41 } 42 }); 43 } 44} 45 46REAIOSScheduler::~REAIOSScheduler() {} 47 48} // namespace reanimated 49