// // Created by Marc Rousavy on 25.07.21. // #pragma once #include "Scheduler.h" #include #include #include namespace vision { using namespace facebook; class VisionCameraScheduler : public reanimated::Scheduler, public jni::HybridClass { public: static auto constexpr kJavaDescriptor = "Lcom/mrousavy/camera/frameprocessor/VisionCameraScheduler;"; static jni::local_ref initHybrid(jni::alias_ref jThis); static void registerNatives(); // schedules the given job to be run on the VisionCamera FP Thread at some future point in time void scheduleOnUI(std::function job) override; private: friend HybridBase; jni::global_ref javaPart_; explicit VisionCameraScheduler(jni::alias_ref jThis): javaPart_(jni::make_global(jThis)) {} // Schedules a call to `triggerUI` on the VisionCamera FP Thread void scheduleTrigger(); // Calls the latest job in the job queue void triggerUI() override; }; } // namespace vision