-
Notifications
You must be signed in to change notification settings - Fork 3.3k
[camera] Convert Windows to Pigeon #6925
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
[camera] Convert Windows to Pigeon #6925
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some overview of the changes to help with review:
} | ||
|
||
// Pigeon version of the relevant subset of VideoCaptureOptions. | ||
class PlatformVideoCaptureOptions { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I fully expect this to contain other things later, thus the use of the wrapper now.
// | ||
// Returns an error result if the result has already been added. | ||
virtual bool AddPendingResult(PendingResultType type, | ||
std::unique_ptr<MethodResult<>> result) = 0; | ||
virtual bool AddPendingVoidResult( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These new methods are because callbacks are no longer one generic type. I could have just changed the existing API to take the new variant
, but I opted to hide that to minimize the number of places where we are essentially dropping type safety.
That will also make it simpler to change to something fully type-safe later since it will be internal to this one class.
@@ -29,24 +30,6 @@ namespace camera_windows { | |||
using flutter::TextureRegistrar; | |||
using Microsoft::WRL::ComPtr; | |||
|
|||
// Camera resolution presets. Used to request a capture resolution. | |||
enum class ResolutionPreset { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is replaced by a Pigeon-generated enum.
// Allows to tune recorded video parameters, such as resolution, frame rate, | ||
// bitrate. If [fps], [video_bitrate] or [audio_bitrate] are passed, they must | ||
// be greater than zero. | ||
struct RecordSettings { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This struct is replaced by a Pigeon-generated data class.
@cbracken Ping on this review in case you missed the notification while you were out. |
Back as of yesterday and mostly caught up on mail. Looking! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
flutter/packages@14341d1...ea35fc6 2024-07-10 [email protected] [camera_avfoundation] Adds Swift Package Manager compatibility (flutter/packages#7080) 2024-07-10 [email protected] [webview_flutter_wkwebview] Adds Swift Package Manager compatibility (flutter/packages#7091) 2024-07-10 [email protected] [webview_flutter_web] Migrate to package:web. (flutter/packages#6792) 2024-07-10 [email protected] [camera] Clean up `maxDuration` code (flutter/packages#7039) 2024-07-10 [email protected] Update espresso dependencies (flutter/packages#7048) 2024-07-09 [email protected] [camera] Fix iOS torch mode regression (flutter/packages#7085) 2024-07-09 [email protected] [google_maps_flutter] Convert Obj-C->Dart calls to Pigeon (flutter/packages#7086) 2024-07-09 [email protected] Roll Flutter from fafd67d to 5103d75 (27 revisions) (flutter/packages#7084) 2024-07-09 [email protected] [camera_avfoundation] fix sample times not being numeric after pause/resume. (flutter/packages#6897) 2024-07-09 [email protected] [camera] Convert Windows to Pigeon (flutter/packages#6925) 2024-07-09 [email protected] [camera] Deprecate `maxDuration` in platform interface (flutter/packages#7078) 2024-07-09 [email protected] [google_maps_flutter] Semi-convert remaining iOS host API calls to Pigeon (flutter/packages#7079) 2024-07-09 [email protected] [path_provider] Remove `win32` (flutter/packages#7073) 2024-07-08 [email protected] [google_maps_flutter] Move iOS inspector to Pigeon (flutter/packages#6937) 2024-07-08 49699333+dependabot[bot]@users.noreply.github.com [camera]: Bump com.android.tools.build:gradle from 7.3.0 to 8.5.0 in /packages/camera/camera_android_camerax/android (flutter/packages#7072) 2024-07-08 49699333+dependabot[bot]@users.noreply.github.com [local_auth]: Bump com.android.tools.build:gradle from 7.3.1 to 8.5.0 in /packages/local_auth/local_auth_android/android (flutter/packages#7069) 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 [email protected],[email protected] 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://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Replaces all of the manual method channel code in
camera_windows
with Pigeon.I attempted to change the structure as little as possible, since this was already a large change. I don't particularly like the way the native result callback objects are managed (passed to
Camera
and tracked in a map), but I decided that redesigning that would be out of scope and introduced astd::variant
to allow minimal changes to that structure. That does slightly undermine the type safety of the callbacks, but it's still strictly enforced at the level of the helpers that interact with the map.Fixes flutter/flutter#117905
Pre-launch Checklist
dart format
.)[shared_preferences]
pubspec.yaml
with an appropriate new version according to the pub versioning philosophy, or this PR is exempt from version changes.CHANGELOG.md
to add a description of the change, following repository CHANGELOG style, or this PR is exempt from CHANGELOG changes.///
).