-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[macOS] OS::GetCurrentMonotonicTicks should probably use CLOCK_UPTIME_RAW
.
#55071
Comments
@rmacnak-google |
The original PR assumed that `fml::TimePoint` has same base as `CACurrentMediaTime()`. However due to recent change in Dart SDK that's no longer true. Dart SDK [replaced](https://dart-review.googlesource.com/c/sdk/+/348044?tab=comments) call to `mach_absolute_time` with `clock_gettime_nsec_np(CLOCK_MONOTONIC_RAW)`, while `CACurrentMediaTime()` corresponds to `CLOCK_UPTIME_RAW`. This needs to be fixed either in Dart SDK dart-lang/sdk#55071 or the original PR needs to be relanded with appropriate conversions. This reverts commit 21474ee. *Replace this paragraph with a description of what this PR is changing or adding, and why. Consider including before/after screenshots.* *List which issues are fixed by this PR. You must list at least one issue.* *If you had to change anything in the [flutter/tests] repo, include a link to the migration guide as per the [breaking change policy].* ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide] and the [C++, Objective-C, Java style guides]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I added new tests to check the change I am making or feature I am adding, or the PR is [test-exempt]. See [testing the engine] for instructions on writing and running engine tests. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I signed the [CLA]. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/wiki/Tree-hygiene#overview [Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene [test-exempt]: https://github.com/flutter/flutter/wiki/Tree-hygiene#tests [Flutter Style Guide]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style [testing the engine]: https://github.com/flutter/flutter/wiki/Testing-the-engine [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/wiki/Chat
|
So does The issue here is that |
I gave this another though - I think the correct solution is to not assume anything about the embedder API clock and always rebase the time, i.e. I still think that maybe |
@knopp is there anything actionable on the Dart side for this ? |
I don't think so. I'll close the issue. |
This would corresponds to other macOS API such as
CACurrentMediaTime()
. Otherwise we have a problem where DisplayLink callback gives target timestamp in based onCLOCK_UPTIME_RAW
, butfml::TimePoint
expectsCLOCK_MONOTONIC_RAW
.Also the documentation for
mach_absolute_time
suggestsclock_gettime_nsec_np(CLOCK_UPTIME_RAW)
as suitable replacement andclock_gettime_nsec_np(CLOCK_UPTIME_RAW)
is not mentioned in the prohibited boot time API list.@rmacnak-google
The text was updated successfully, but these errors were encountered: