-
Notifications
You must be signed in to change notification settings - Fork 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
Implemented threadsafe platform channel replies on windows #36909
Implemented threadsafe platform channel replies on windows #36909
Conversation
3df6a62
to
8fd770b
Compare
FlutterDesktopMessengerRef FlutterDesktopMessengerAddRef( | ||
FlutterDesktopMessengerRef messenger) { | ||
assert(false); // not implemented | ||
return nullptr; |
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.
No existing tests for the client_wrapper actually hit this code. In terms of code coverage it isn't strictly needed since I have coverage in the windows unit tests.
did_call_reply = true; | ||
}); | ||
// Rely on timeout mechanism in CI. | ||
while (!did_call_callback && !did_call_reply && !did_call_dart_reply) { | ||
while (!did_call_callback || !did_call_reply || !did_call_dart_reply) { |
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 an existing error in a test that landed in a different PR. I'm fixing it here.
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.
LGTM but consider getting at least one other approval as my knowledge here is shaky :)
friendly ping @stuartmorgan or @cbracken |
71b65ee
to
a248e62
Compare
174e349
to
cfa8d24
Compare
if (!FlutterDesktopMessengerIsAvailable(messenger_ptr.get())) { | ||
// Drop reply if it comes in after the engine is destroyed. | ||
return; | ||
} | ||
if (!response_handle) { |
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.
Optional nit: this block is entirely local, so could be done before acquiring the lock instead.
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.
IsAvailable has to happen inside the safety of the lock.
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.
My comment was on this code:
if (!response_handle) {
std::cerr << "Error: Response can be set only once. Ignoring "
"duplicate response."
<< std::endl;
return;
}
which doesn't have any calls to IsAvailable.
045b563
to
9db9d76
Compare
friendly ping @stuartmorgan |
/// Convert to FlutterDesktopMessengerRef. | ||
FlutterDesktopMessengerRef ToRef() { | ||
return reinterpret_cast<FlutterDesktopMessengerRef>(this); | ||
} |
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.
Why are these part of the class rather than in flutter_window.cc
with the others?
The intended model here is that there's a coherent C++ interface that all internal logic is developed against, and then flutter_windows.*
is a minimal layer over that for the sole purpose of creating a DLL interface (which has to be C). These opaque handles are purely a function of the C API layer, which is why the other functions are in flutter_window.cc
; the C++ classes shouldn't know about the C layer when we can avoid it since that's a layering inversion. (In pattern terms I would view the C layer as basically a Facade, if that helps.)
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.
They were put there as the most convenient location. They can't live in flutter_window.cc
because they are also used in flutter_windows_engine.cc because of BinaryMessengerImpl
and IncomingMessageDispatcher
using FlutterDesktopMessengerRef
. I considered changing those interfaces but decided to do the least amount of change possible.
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.
Ah, right. Could you put a TODO on these then to move them to flutter_windows.cc functions and remove the internal usage of FlutterDesktopMessengerRef
?
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.
done, added issue: flutter/flutter#115021
// The engine that owns this state object. | ||
flutter::FlutterWindowsEngine* engine = nullptr; | ||
}; | ||
struct FlutterDesktopMessenger {}; |
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.
You should be able to completely remove this. The pointers that have already been fully converted to classes use the opaque struct design, where the struct is forward declared but never defined, because it's only used to create a typed pointer.
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.
done
… windows (flutter/engine#36909) (#115033) Commit: befd8b66cd7b94b3018125f66659b50fdec0a078
* 3a656b1 Add more supported simulator debugging options and improve tests (flutter/flutter#114628) * 51c517c [flutter_tools/dap] Add support for forwarding `flutter run --machine` exposeUrl requests to the DAP client (flutter/flutter#114539) * 8e5439c Roll Flutter Engine from e7d7edab98ad to c76035429c36 (14 revisions) (flutter/flutter#115008) * a479718 Update cirrus key (flutter/flutter#115006) * dccc761 Roll Flutter Engine from c76035429c36 to aa4b3ea2f733 (27 revisions) (flutter/flutter#115025) * d0491dc Add the `channel` parameter to the Dartpad samples (flutter/flutter#115018) * befd8b6 722414a26 Implemented threadsafe platform channel replies on windows (flutter/engine#36909) (flutter/flutter#115033) * 154ae0f `updateSemantics` in TestWindow should always be implemented. (flutter/flutter#114857) * 008ac17 remove unnecessary brace in string interpolation (flutter/flutter#115032) * 8926d9e a9fbf6af5 Roll Fuchsia Linux SDK from mDzQK4ZUk_Y4wfZa_... to RNSA2Wp1MObtc7OHy... (flutter/engine#37485) (flutter/flutter#115045) * e6fb124 Roll Flutter Engine from a9fbf6af52c9 to b42ed6933cef (2 revisions) (flutter/flutter#115048) * ff75451 a42b2d9b9 Fix a race in the EmbedderA11yTest.A11yTreeIsConsistent tests (flutter/engine#37488) (flutter/flutter#115060) * c7d1154 a71c0c6c3 [Impeller] Support access the descriptor of PipelineFuture directly (flutter/engine#37415) (flutter/flutter#115063)
* 3a656b1 Add more supported simulator debugging options and improve tests (flutter/flutter#114628) * 51c517c [flutter_tools/dap] Add support for forwarding `flutter run --machine` exposeUrl requests to the DAP client (flutter/flutter#114539) * 8e5439c Roll Flutter Engine from e7d7edab98ad to c76035429c36 (14 revisions) (flutter/flutter#115008) * a479718 Update cirrus key (flutter/flutter#115006) * dccc761 Roll Flutter Engine from c76035429c36 to aa4b3ea2f733 (27 revisions) (flutter/flutter#115025) * d0491dc Add the `channel` parameter to the Dartpad samples (flutter/flutter#115018) * befd8b6 722414a26 Implemented threadsafe platform channel replies on windows (flutter/engine#36909) (flutter/flutter#115033) * 154ae0f `updateSemantics` in TestWindow should always be implemented. (flutter/flutter#114857) * 008ac17 remove unnecessary brace in string interpolation (flutter/flutter#115032) * 8926d9e a9fbf6af5 Roll Fuchsia Linux SDK from mDzQK4ZUk_Y4wfZa_... to RNSA2Wp1MObtc7OHy... (flutter/engine#37485) (flutter/flutter#115045) * e6fb124 Roll Flutter Engine from a9fbf6af52c9 to b42ed6933cef (2 revisions) (flutter/flutter#115048) * ff75451 a42b2d9b9 Fix a race in the EmbedderA11yTest.A11yTreeIsConsistent tests (flutter/engine#37488) (flutter/flutter#115060) * c7d1154 a71c0c6c3 [Impeller] Support access the descriptor of PipelineFuture directly (flutter/engine#37415) (flutter/flutter#115063)
…6909) * Implemented threadsafe platform channel replies on windows * added unit test * added docstrings * implemented glfw * added comments * made glfw messenger unable to be copied * stuart feedback 1 * stuart feedback 2: replaced the shared_ptr * stuart feedback 3 * stuart feedback: remove error log * Moved FlutterDesktopMessenger to its own file. * updated licenses * stuart feedback
* 3a656b1 Add more supported simulator debugging options and improve tests (flutter/flutter#114628) * 51c517c [flutter_tools/dap] Add support for forwarding `flutter run --machine` exposeUrl requests to the DAP client (flutter/flutter#114539) * 8e5439c Roll Flutter Engine from e7d7edab98ad to c76035429c36 (14 revisions) (flutter/flutter#115008) * a479718 Update cirrus key (flutter/flutter#115006) * dccc761 Roll Flutter Engine from c76035429c36 to aa4b3ea2f733 (27 revisions) (flutter/flutter#115025) * d0491dc Add the `channel` parameter to the Dartpad samples (flutter/flutter#115018) * befd8b6 722414a26 Implemented threadsafe platform channel replies on windows (flutter/engine#36909) (flutter/flutter#115033) * 154ae0f `updateSemantics` in TestWindow should always be implemented. (flutter/flutter#114857) * 008ac17 remove unnecessary brace in string interpolation (flutter/flutter#115032) * 8926d9e a9fbf6af5 Roll Fuchsia Linux SDK from mDzQK4ZUk_Y4wfZa_... to RNSA2Wp1MObtc7OHy... (flutter/engine#37485) (flutter/flutter#115045) * e6fb124 Roll Flutter Engine from a9fbf6af52c9 to b42ed6933cef (2 revisions) (flutter/flutter#115048) * ff75451 a42b2d9b9 Fix a race in the EmbedderA11yTest.A11yTreeIsConsistent tests (flutter/engine#37488) (flutter/flutter#115060) * c7d1154 a71c0c6c3 [Impeller] Support access the descriptor of PipelineFuture directly (flutter/engine#37415) (flutter/flutter#115063)
* 3a656b1 Add more supported simulator debugging options and improve tests (flutter/flutter#114628) * 51c517c [flutter_tools/dap] Add support for forwarding `flutter run --machine` exposeUrl requests to the DAP client (flutter/flutter#114539) * 8e5439c Roll Flutter Engine from e7d7edab98ad to c76035429c36 (14 revisions) (flutter/flutter#115008) * a479718 Update cirrus key (flutter/flutter#115006) * dccc761 Roll Flutter Engine from c76035429c36 to aa4b3ea2f733 (27 revisions) (flutter/flutter#115025) * d0491dc Add the `channel` parameter to the Dartpad samples (flutter/flutter#115018) * befd8b6 722414a26 Implemented threadsafe platform channel replies on windows (flutter/engine#36909) (flutter/flutter#115033) * 154ae0f `updateSemantics` in TestWindow should always be implemented. (flutter/flutter#114857) * 008ac17 remove unnecessary brace in string interpolation (flutter/flutter#115032) * 8926d9e a9fbf6af5 Roll Fuchsia Linux SDK from mDzQK4ZUk_Y4wfZa_... to RNSA2Wp1MObtc7OHy... (flutter/engine#37485) (flutter/flutter#115045) * e6fb124 Roll Flutter Engine from a9fbf6af52c9 to b42ed6933cef (2 revisions) (flutter/flutter#115048) * ff75451 a42b2d9b9 Fix a race in the EmbedderA11yTest.A11yTreeIsConsistent tests (flutter/engine#37488) (flutter/flutter#115060) * c7d1154 a71c0c6c3 [Impeller] Support access the descriptor of PipelineFuture directly (flutter/engine#37415) (flutter/flutter#115063)
This updates the guidelines about threading and the responses to platform channels. Once the following PRs are on `main` all official platforms (minus web where it doesn't make sense) support thread-safe responses. issue: flutter/flutter#93945 Do no land until the following are on stable: 1) flutter/engine#37689 1) flutter/engine#37607 1) flutter/engine#36909 ## Presubmit checklist - [x] This PR doesn’t contain automatically generated corrections (Grammarly or similar). - [x] This PR follows the [Google Developer Documentation Style Guidelines](https://developers.google.com/style) — for example, it doesn’t use _i.e._ or _e.g._, and it avoids _I_ and _we_ (first person). - [x] This PR uses [semantic line breaks](https://github.com/dart-lang/site-shared/blob/main/doc/writing-for-dart-and-flutter-websites.md#semantic-line-breaks) of 80 characters or fewer. Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com> Co-authored-by: Parker Lougheed <parlough@gmail.com>
This updates the guidelines about threading and the responses to platform channels. Once the following PRs are on `main` all official platforms (minus web where it doesn't make sense) support thread-safe responses. issue: flutter/flutter#93945 Do no land until the following are on stable: 1) flutter/engine#37689 1) flutter/engine#37607 1) flutter/engine#36909 ## Presubmit checklist - [x] This PR doesn’t contain automatically generated corrections (Grammarly or similar). - [x] This PR follows the [Google Developer Documentation Style Guidelines](https://developers.google.com/style) — for example, it doesn’t use _i.e._ or _e.g._, and it avoids _I_ and _we_ (first person). - [x] This PR uses [semantic line breaks](https://github.com/dart-lang/site-shared/blob/main/doc/writing-for-dart-and-flutter-websites.md#semantic-line-breaks) of 80 characters or fewer. Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com> Co-authored-by: Parker Lougheed <parlough@gmail.com>
* Adding state restoration pages (#8424) Fixes #2004 Fixes another issue that I can't find atm. [Staged link](https://sz-flutter-2.web.app/development/platform-integration/android/restore-state-android) @goderbauer, there are questions for you in this PR. cc @goderbauer --------- Co-authored-by: Parker Lougheed <parlough@gmail.com> * Fix typo "priori" -> "prior" (#8573) _Description of what this PR is changing or adding, and why:_ _Issues fixed by this PR (if any): Fix typo in `src/resources/inside-flutter.md:589` - [x] This PR doesn’t contain automatically generated corrections (Grammarly or similar). - [x] This PR follows the [Google Developer Documentation Style Guidelines](https://developers.google.com/style) — for example, it doesn’t use _i.e._ or _e.g._, and it avoids _I_ and _we_ (first person). - [x] This PR uses [semantic line breaks](https://github.com/dart-lang/site-shared/blob/master/doc/writing-for-dart-and-flutter-websites.md#semantic-line-breaks) of 80 characters or fewer. --------- Co-authored-by: Brett Morgan <brettmorgan@google.com> Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com> * Replace Webby mention with I/O in banner (#8627) The Webby voting has ended. This PR removes the Webby mention and reintroduces the I/O call to action. <img width="559" alt="Screenshot of banner" src="https://user-images.githubusercontent.com/18372958/234385170-785d7be7-9b39-4752-b398-95a7e7f987a7.png"> Co-authored-by: Brett Morgan <brettmorgan@google.com> * [Proposal] Breakup development directory (#8624) This pull request extracts all subcategories from `/development` to top-level entries, to match similar entries like "Deployment" and "Testing and debugging". The subcategories under Development are perhaps the most important categories for learning Flutter, but they were hidden under Development. This made them harder to navigate, with smaller text, and with deeper links and breadcrumbs. Work done: - Pulled subdirectories out of `/development` - Updated all old redirects and links to new destination - Introduce new redirects so old links keep working - Add some of the new top-level dividers to visually distinguish content - Enable breadcrumbs in moved content - Enable breadcrumbs within "Deployment" - Moved "Add to app" below "Deployment" - Add a short title for Add to app This is part of incremental work, and will be followed up with breaking up and reorganization "User interface", adjusting titles of content, and adding some cookbooks to the sidenav. Staged: https://flutter-docs-prod--pr8624-feature-breakup-deve-00ees3e9.web.app/ * Deprecate `describeEnum`. (#8571) Tied to flutter/flutter#125016 --------- Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com> * Moving migration guides to the release directory (#8629) Part of the IA cleanup, moving migration guides to the /release directory and removing them from the sidenav. cc @parlough --------- Co-authored-by: Parker Lougheed <parlough@gmail.com> * flavors.md - Updated path of "New Scheme" in the XCode menu. (#8599) Updated path of "New Scheme" in the XCode menu. ![image](https://user-images.githubusercontent.com/4278331/233380485-da5efb42-5ea7-47e1-883e-6a949299332a.png) **IMPORTANT:** Due to work on the docs.flutter.dev infrastructure, **all open pull requests will be closed April 26.** If your PR needs to be merged by April 26, please say that in your PR. Otherwise, please [file an issue](https://github.com/flutter/website/issues/new/choose) about the needed change, and (if you submit a PR) be prepared to recreate the PR May 10 or later. --- _Description of what this PR is changing or adding, and why:_ _Issues fixed by this PR (if any):_ - [ ] This PR doesn’t contain automatically generated corrections (Grammarly or similar). - [ ] This PR follows the [Google Developer Documentation Style Guidelines](https://developers.google.com/style) — for example, it doesn’t use _i.e._ or _e.g._, and it avoids _I_ and _we_ (first person). - [ ] This PR uses [semantic line breaks](https://github.com/dart-lang/site-shared/blob/main/doc/writing-for-dart-and-flutter-websites.md#semantic-line-breaks) of 80 characters or fewer. * Bump site-shared from `04a5353` to `74292e2` (#8630) * Fix apostrophe in contextual-survey-metadata.json (#8631) Changing apostrophe character in description --- Makes it so that we can parse the json in dart code in the response * Document the new `canvasKitVariant` runtime configuration (#8475) Add documentation for the new [`canvasKitVariant`](https://github.com/flutter/engine/blob/0776f38b87137ad2535d77e91a79b8b6c80f16fb/lib/web_ui/lib/src/engine/configuration.dart#L221-L224) runtime configuration. Closes flutter/flutter#123048 - [x] This PR doesn’t contain automatically generated corrections (Grammarly or similar). - [x] This PR follows the [Google Developer Documentation Style Guidelines](https://developers.google.com/style) — for example, it doesn’t use _i.e._ or _e.g._, and it avoids _I_ and _we_ (first person). - [x] This PR uses [semantic line breaks](https://github.com/dart-lang/site-shared/blob/master/doc/writing-for-dart-and-flutter-websites.md#semantic-line-breaks) of 80 characters or fewer. --------- Co-authored-by: Anthony Sansone <atsansone@users.noreply.github.com> * Adding wireless debugging information to the docs (#8456) We've added support for wireless debugging of iOS devices. This PR adds documentation for setting it up. To do: - [x] Add in information about IPv4 and IPv6 to `flutter attach` page - [ ] Specify the Flutter release where this feature is available - [x] See if there's any information needed for Android wireless debugging _Issues fixed by this PR (if any):_ #8425 - [x] This PR doesn’t contain automatically generated corrections (Grammarly or similar). - [x] This PR follows the [Google Developer Documentation Style Guidelines](https://developers.google.com/style) — for example, it doesn’t use _i.e._ or _e.g._, and it avoids _I_ and _we_ (first person). - [x] This PR uses [semantic line breaks](https://github.com/dart-lang/site-shared/blob/master/doc/writing-for-dart-and-flutter-websites.md#semantic-line-breaks) of 80 characters or fewer. --------- Co-authored-by: Victoria Ashworth <vashworth@google.com> Co-authored-by: Brett Morgan <brettmorgan@google.com> Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com> * Adaptation information for inputs and app bars (#8509) This PR adds some information on how to adapt styling for input widgets with .adaptive() constructors, as well as top app bars. Note that I am not sure of the best way to style the tables or size the images. Also, I have added some commented out sections that should be added when stable release goes live. Fixes: #8428 - [X] This PR doesn’t contain automatically generated corrections (Grammarly or similar). - [X] This PR follows the [Google Developer Documentation Style Guidelines](https://developers.google.com/style) — for example, it doesn’t use _i.e._ or _e.g._, and it avoids _I_ and _we_ (first person). - [X] This PR uses [semantic line breaks](https://github.com/dart-lang/site-shared/blob/master/doc/writing-for-dart-and-flutter-websites.md#semantic-line-breaks) of 80 characters or fewer. @MitchellGoodwin could you take a quick peak at the code and make sure it looks okay? @InMatrix feel free to propose any edits! --------- Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com> * Adapting bottom navigation bar (#8541) This adds to our platform adaptation documentation to add a section on tab bars. This fixes this issue: https://github.com/flutter/website/issues/8540. Builds on top of this PR: #8509 - [X] This PR doesn’t contain automatically generated corrections (Grammarly or similar). - [X] This PR follows the [Google Developer Documentation Style Guidelines](https://developers.google.com/style) — for example, it doesn’t use _i.e._ or _e.g._, and it avoids _I_ and _we_ (first person). - [X] This PR uses [semantic line breaks](https://github.com/dart-lang/site-shared/blob/master/doc/writing-for-dart-and-flutter-websites.md#semantic-line-breaks) of 80 characters or fewer. --------- Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com> Co-authored-by: Anthony Sansone <atsansone@users.noreply.github.com> * Updated Impeller details (#8607) Fixes #8608 --------- Co-authored-by: Loïc Sharma <737941+loic-sharma@users.noreply.github.com> * Enable build checks and tests in next branch (#8609) * Update widget catalog to show Material 3 widgets (#8574) Fixes #8432. Site changes are viewable at the staging site: https://flutter-site-73ed1.web.app/development/ui/widgets/. Primary changes: - Addition of Material 3 Components card [(view)](https://flutter-site-73ed1.web.app/development/ui/widgets/). - New Material 3 page showing M3 widgets as displayed in matching categories to material.io/components. This also includes a note about Material 3 becoming the default - this text is not final and can be iterated on in review. - Widget cards in the M3 page have a hover effect applied. - In the widgets overview page, Material now links to M3, and contains a link to the previous M2 widgets page. General notes: - Material 2 page ~~remains unchanged~~ has a notice about Material 3. - No light/dark modes - this was explored but decided against, with the possibility of returning to it if the site undergoes a site-wide dark mode addition. - [x] This PR doesn’t contain automatically generated corrections (Grammarly or similar). - [x] This PR follows the [Google Developer Documentation Style Guidelines](https://developers.google.com/style) — for example, it doesn’t use _i.e._ or _e.g._, and it avoids _I_ and _we_ (first person). - [x] This PR uses [semantic line breaks](https://github.com/dart-lang/site-shared/blob/master/doc/writing-for-dart-and-flutter-websites.md#semantic-line-breaks) of 80 characters or fewer. * Updated the threading notice for platform channel responses. (#7901) This updates the guidelines about threading and the responses to platform channels. Once the following PRs are on `main` all official platforms (minus web where it doesn't make sense) support thread-safe responses. issue: flutter/flutter#93945 Do no land until the following are on stable: 1) flutter/engine#37689 1) flutter/engine#37607 1) flutter/engine#36909 - [x] This PR doesn’t contain automatically generated corrections (Grammarly or similar). - [x] This PR follows the [Google Developer Documentation Style Guidelines](https://developers.google.com/style) — for example, it doesn’t use _i.e._ or _e.g._, and it avoids _I_ and _we_ (first person). - [x] This PR uses [semantic line breaks](https://github.com/dart-lang/site-shared/blob/main/doc/writing-for-dart-and-flutter-websites.md#semantic-line-breaks) of 80 characters or fewer. Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com> Co-authored-by: Parker Lougheed <parlough@gmail.com> * Update PR Template for Website Freeze (#8632) --------- Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com> Co-authored-by: Parker Lougheed <parlough@gmail.com> Co-authored-by: 失魂魚 <satwanjyu@outlook.com> Co-authored-by: Brett Morgan <brettmorgan@google.com> Co-authored-by: Bernardo Ferrari <bernaferrari2@gmail.com> Co-authored-by: Dimitris Paxinos <dpaxinos@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Elias Yishak <42216813+eliasyishak@users.noreply.github.com> Co-authored-by: Mouad Debbar <mouad.debbar@gmail.com> Co-authored-by: Anthony Sansone <atsansone@users.noreply.github.com> Co-authored-by: Leigha Jarett <leighaj@google.com> Co-authored-by: Victoria Ashworth <vashworth@google.com> Co-authored-by: Loïc Sharma <737941+loic-sharma@users.noreply.github.com> Co-authored-by: Eilidh Southren <esouthren@google.com> Co-authored-by: gaaclarke <30870216+gaaclarke@users.noreply.github.com>
This makes it so platform message handlers on Windows can invoke their replies from any thread. The reason this is possible is:
issue: flutter/flutter#93945
Pre-launch Checklist
writing and running engine tests.
///
).If you need help, consider asking for advice on the #hackers-new channel on Discord.