30 {
32 auto* weak_this = new std::weak_ptr<VsyncWaiter>(shared_from_this());
35 const auto& choreographer =
36 impeller::android::Choreographer::GetInstance();
37 choreographer.PostFrameCallback([weak_this](auto time) {
38 auto time_ns =
39 std::chrono::time_point_cast<std::chrono::nanoseconds>(time)
40 .time_since_epoch()
41 .count();
42 OnVsyncFromNDK(time_ns, weak_this);
43 });
44 });
45 } else {
46
47
48 auto* weak_this = new std::weak_ptr<VsyncWaiter>(shared_from_this());
49 jlong java_baton = reinterpret_cast<jlong>(weak_this);
54 java_baton
55 );
56 });
57 }
58}
fml::RefPtr< fml::TaskRunner > GetUITaskRunner() const
fml::RefPtr< fml::TaskRunner > GetPlatformTaskRunner() const
const TaskRunners task_runners_
static void RunNowOrPostTask(const fml::RefPtr< fml::TaskRunner > &runner, const fml::closure &task)
virtual void PostTask(const fml::closure &task) override
static bool IsAvailableOnPlatform()
static fml::jni::ScopedJavaGlobalRef< jclass > * g_vsync_waiter_class
static jmethodID g_async_wait_for_vsync_method_
JNIEnv * AttachCurrentThread()