Skip to content
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

[video_player] Add macOS support #4982

Merged
merged 30 commits into from
Sep 28, 2023

Conversation

stuartmorgan
Copy link
Contributor

@stuartmorgan stuartmorgan commented Sep 22, 2023

Adds macOS support to video_player, sharing almost all of the code with iOS.

Notes about changes at a high level:

  • macOS does not have CADisplayLink (prior to 14, and even there without all the functionality we need), so this adds macOS compilation branches that use the lower-level CVDisplayLink instead. Per the TODO, this code should be extracted later to reduce ifdefs in what is already a complicated file.
  • Adds KVO unregistration on dealloc if it wasn't done in dispose, since unit tests were crashing on macOS with that.
  • Temporarily ifdef's out publish: for macOS, with a TODO to re-enable it after the next stable.

Most of flutter/flutter#41688
Once this lands, the app-facing package will be updated to endorse it for macOS.

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I read the Tree Hygiene wiki page, which explains my responsibilities.
  • I read and followed the relevant style guides and ran the auto-formatter. (Unlike the flutter/flutter repo, the flutter/packages repo does use dart format.)
  • I signed the CLA.
  • The title of the PR starts with the name of the package surrounded by square brackets, e.g. [shared_preferences]
  • I listed at least one issue that this PR fixes in the description above.
  • I updated pubspec.yaml with an appropriate new version according to the pub versioning philosophy, or this PR is exempt from version changes.
  • I updated CHANGELOG.md to add a description of the change, following repository CHANGELOG style.
  • I updated/added relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making, or this PR is test-exempt.
  • All existing and new tests are passing.

@stuartmorgan stuartmorgan changed the title Video player macos [video_player] Add macOS support Sep 22, 2023
@stuartmorgan
Copy link
Contributor Author

The podspec check failure is because the Flutter Pod we lint against is one that we manually publish occasionally just for this, and it hasn't been updated since those APIs were added. I'll need to dig up the instructions on updating it.

@stuartmorgan

This comment was marked as resolved.

@stuartmorgan
Copy link
Contributor Author

Tests should all be green now, so this is fully ready.

Copy link
Contributor

@tarrinneal tarrinneal left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TPMITIDF,BIDKETFTH.

Seems fine.

@stuartmorgan
Copy link
Contributor Author

Hm, I thought that script change would fix the check_podspecs failure. It looks like I'll need to find another way to force it to get the right version.

@stuartmorgan
Copy link
Contributor Author

Hm, I thought that script change would fix the check_podspecs failure. It looks like I'll need to find another way to force it to get the right version.

And now it's fine even without the cache clearing 🤷🏻 Maybe just a general CDN propagation issue.

Copy link
Member

@cbracken cbracken left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks reasonable. This is a bit on the border of ifdefs where it might be worth considering macOS/iOS subclasses for the conditionally compiled logic but it's still a relatively small/innocuous amount overall, so seems fine as is.

@stuartmorgan stuartmorgan added the autosubmit Merge PR when tree becomes green via auto submit App label Sep 28, 2023
@auto-submit auto-submit bot merged commit c070b0a into flutter:main Sep 28, 2023
70 checks passed
@stuartmorgan stuartmorgan deleted the video-player-macos branch September 28, 2023 11:18
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Sep 28, 2023
auto-submit bot pushed a commit to flutter/flutter that referenced this pull request Sep 28, 2023
flutter/packages@21c2ebb...c070b0a

2023-09-28 stuartmorgan@google.com [video_player] Add macOS support (flutter/packages#4982)
2023-09-28 32538273+ValentinVignal@users.noreply.github.com [go_router] Avoid logging when `debugLogDiagnostics` is `false` (flutter/packages#4875)
2023-09-28 stuartmorgan@google.com [tool] Don't lint Flutter shim podspecs (flutter/packages#5007)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC flutter-ecosystem@google.com,rmistry@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
@AlexV525

This comment was marked as resolved.

Mairramer pushed a commit to Mairramer/flutter that referenced this pull request Oct 10, 2023
flutter/packages@21c2ebb...c070b0a

2023-09-28 stuartmorgan@google.com [video_player] Add macOS support (flutter/packages#4982)
2023-09-28 32538273+ValentinVignal@users.noreply.github.com [go_router] Avoid logging when `debugLogDiagnostics` is `false` (flutter/packages#4875)
2023-09-28 stuartmorgan@google.com [tool] Don't lint Flutter shim podspecs (flutter/packages#5007)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC flutter-ecosystem@google.com,rmistry@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
HugoOlthof pushed a commit to moneybird/packages that referenced this pull request Dec 13, 2023
Adds macOS support to `video_player`, sharing almost all of the code with iOS.

Notes about changes at a high level:
- macOS does not have `CADisplayLink` (prior to 14, and even there without all the functionality we need), so this adds macOS compilation branches that use the lower-level `CVDisplayLink` instead. Per the TODO, this code should be extracted later to reduce `ifdef`s in what is already a complicated file.
- Adds KVO unregistration on `dealloc` if it wasn't done in `dispose`, since unit tests were crashing on macOS with that.
- Temporarily ifdef's out `publish:` for macOS, with a TODO to re-enable it after the next stable.

Most of flutter/flutter#41688
Once this lands, the app-facing package will be updated to endorse it for macOS.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
autosubmit Merge PR when tree becomes green via auto submit App p: video_player platform-ios platform-macos
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants