Skip to content

deps: replace vendored refresh_rate 1.0.2 with upstream 2.0.1 #1584

Open

Description

@ZhuchkaTriplesix

Summary

third_party/refresh_rate is a vendored copy of refresh_rate 1.0.2 kept only for two build fixes. Upstream 2.0.1 appears to fix both natively, so the fork can likely be dropped in favour of refresh_rate: ^2.0.1.

Why the fork exists vs. 2.0.1

Reason for the fork In 2.0.1
Linux -Werror: uninitialized rates[0] Linux plugin rewritten on generated Pigeon GObject bindings; the hand-rolled rates array is gone
macOS SPM: Package.swift pointed at ../Classes, outside the package root (#555) Package.swift uses path: "Sources/refresh_rate" inside the package

App compatibility

Only lib/core/motion/display_refresh_service.dart uses the package.

  • RefreshRate.enable() now returns Future<RateRequestResult>; we call it unawaited (wrap in unawaited(...) if the lint is on).
  • showHz() and info.{currentRate,maxRate,isVariableRefreshRate} are source-compatible.
  • DisplayRefreshService.currentHz / maxHz have no other callers.

Behaviour changes: on Linux maxRate is 0.0 (was max across monitors) and unknown values no longer fall back to 60 Hz. info is populated asynchronously, so the first debug log may show 0 Hz.

Tasks

  • Verify the package publisher: repository moved from qoder-official/refresh_rate to afewgoodcoders/refresh_rate while the Android package is still in.qoder.refresh_rate. Confirm it is a legitimate transfer and skim the native diff 1.0.2 → 2.0.1 (Windows and macOS changed too).
  • pubspec.yaml: refresh_rate: ^2.0.1, remove the refresh_rate entry from dependency_overrides.
  • Delete third_party/refresh_rate/ and update third_party/README.md if it references it.
  • CI green on Linux (-Werror), Windows and macOS.
  • Follow-up, separate PR: reconsider flutter.config.enable-swift-package-manager: false. It disables SPM for all plugins, not just this one.

Fallback

If the Linux -Werror build or Windows/macOS breaks on upstream 2.0.1, keep the fork and re-vendor 2.0.1 with only the needed patch.

Found during the dependency review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Low priority / Polish & EnhancementsenhancementNew feature or requestmotionAnimation system, transitions, motion tokens

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions