Validation for fetchedDisplayRefreshRate #2299
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
📜 Description
Additional validation for displayRefreshRate received from the native level.
💡 Motivation and Context
We noticed that following code:
final fetchedDisplayRefreshRate = await _native?.displayRefreshRate();
sometimes returns 0. It happens only on macOS Monterey and below (At least in our cases).
Assigning 0 to fetchedDisplayRefreshRate leads to exception:
Unsupported operation: Infinity or NaN toInt #0 SpanFrameMetricsCollector.calculateFrameMetrics (package:sentry_flutter/src/span_frame_metrics_collector.dart) #1 SpanFrameMetricsCollector.onSpanFinished (package:sentry_flutter/src/span_frame_metrics_collector.dart:80) #2 SentrySpan.finish (package:sentry/src/protocol/sentry_span.dart:81) #3 SentryTracer.finish (package:sentry/src/sentry_tracer.dart:139) #4 SentryTracer._finishedCallback (package:sentry/src/sentry_tracer.dart:282) #5 SentrySpan.finish (package:sentry/src/protocol/sentry_span.dart:94)
Also it may lead to ui issues in the app (we faced with issues related to displaying svg resources).
💚 How did you test it?
Using default displayRefreshRate (60) prevents exception appearing and ui issues.
📝 Checklist
sendDefaultPii
is enabled