20 auto vsyncCallback = ^(CFTimeInterval startTime, CFTimeInterval targetTime) {
22 CFTimeInterval delay = CACurrentMediaTime() - startTime;
31 CFTimeInterval duration =
41 initWithTaskRunner:uiTaskRunner
54void VsyncWaiterIOS::AwaitVSync() {
57 max_refresh_rate_ = new_max_refresh_rate;
58 [client_ setMaxRefreshRate:max_refresh_rate_];
70 double roundedRefreshRate = round(1.0 / duration);
71 return 1.0 / roundedRefreshRate;
73 double fallbackRefreshRate = max_refresh_rate > 0.0 ? max_refresh_rate : 60.0;
74 return 1.0 / fallbackRefreshRate;
fml::RefPtr< fml::TaskRunner > GetUITaskRunner() const
void FireCallback(fml::TimePoint frame_start_time, fml::TimePoint frame_target_time, bool pause_secondary_tasks=true)
const TaskRunners task_runners_
~VsyncWaiterIOS() override
static CFTimeInterval SnapDuration(CFTimeInterval duration, double max_refresh_rate)
double GetRefreshRate() const override
VsyncWaiterIOS(const flutter::TaskRunners &task_runners)
static constexpr TimeDelta FromSecondsF(double seconds)
FlutterDesktopBinaryReply callback
A manager type that queries display characteristics, such as high refresh rate capabilities.
BOOL maxRefreshRateEnabledOnIPhone
Whether the max refresh rate on iPhone ProMotion devices are enabled. This reflects the value of CADi...
double displayRefreshRate
The maximum display refresh rate used for reporting purposes. This is intended to return either the h...
A client that wraps a CADisplayLink to deliver synchronized vsync signals.
double refreshRate
The current display refresh rate in Hertz, rounded to the nearest integer value.
FLUTTER_ASSERT_ARC static const double kRefreshRateDiffToIgnore