未验证 提交 854943d5 编写于 作者: K Kaushik Iska 提交者: GitHub

[macOS] Set the display refresh rate (#21095)

Fixes: https://github.com/flutter/flutter/issues/49222
上级 0de5c0cf
......@@ -281,6 +281,7 @@ static bool OnAcquireExternalTexture(FlutterEngine* engine,
[self sendUserLocales];
[self updateWindowMetrics];
[self updateDisplayConfig];
return YES;
}
......@@ -317,6 +318,31 @@ static bool OnAcquireExternalTexture(FlutterEngine* engine,
return _resourceContext;
}
- (void)updateDisplayConfig {
if (!_engine) {
return;
}
CVDisplayLinkRef displayLinkRef;
CGDirectDisplayID mainDisplayID = CGMainDisplayID();
CVDisplayLinkCreateWithCGDisplay(mainDisplayID, &displayLinkRef);
CVTime nominal = CVDisplayLinkGetNominalOutputVideoRefreshPeriod(displayLinkRef);
if (!(nominal.flags & kCVTimeIsIndefinite)) {
double refreshRate = static_cast<double>(nominal.timeScale) / nominal.timeValue;
FlutterEngineDisplay display;
display.struct_size = sizeof(display);
display.display_id = mainDisplayID;
display.refresh_rate = round(refreshRate);
std::vector<FlutterEngineDisplay> displays = {display};
FlutterEngineNotifyDisplayUpdate(_engine, kFlutterEngineDisplaysUpdateTypeStartup,
displays.data(), displays.size());
}
CVDisplayLinkRelease(displayLinkRef);
}
- (void)updateWindowMetrics {
if (!_engine) {
return;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册