Skip to content

Conversation

@robert-ancell
Copy link
Contributor

No description provided.

@flutter-dashboard
Copy link

It looks like this pull request may not have tests. Please make sure to add tests or get an explicit test exemption before merging.

If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix?

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. If you believe this PR qualifies for a test exemption, contact "@test-exemption-reviewer" in the #hackers channel in Discord (don't just cc them here, they won't see it!). The test exemption team is a small volunteer group, so all reviewers should feel empowered to ask for tests, without delegating that responsibility entirely to the test exemption group.

@github-actions github-actions bot added framework flutter/packages/flutter repository. See also f: labels. d: examples Sample code and demos a: desktop Running on desktop labels Sep 29, 2025
@robert-ancell robert-ancell marked this pull request as draft September 29, 2025 04:03
@robert-ancell
Copy link
Contributor Author

Putting this up for review now. I'm still working on the integration tests, but I figure it's better to review now before they're done.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request introduces support for regular windows on Linux by implementing the necessary FFI bindings to GTK and creating a WindowingOwner for the Linux platform. It also adds a new Linux example to demonstrate the multiple windows functionality. My review identifies several critical issues related to memory management and FFI correctness in the Dart implementation, which could lead to memory leaks and crashes. Additionally, there are some medium-severity issues regarding incorrect logic in the windowing owner and style guide violations in the C++ example code.

Copy link
Contributor

@mattkae mattkae left a comment

Choose a reason for hiding this comment

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

Code looks mostly good, but we need to hide some things just to simplify the initial PR :)

Also - could you look into integration with the integration tests that I wrote for windows: https://github.com/flutter/flutter/pull/173715/files#diff-0330858a9e31a7103b8864b06c48602346c682a94a8532fb086d22a89fae7c78

I wonder if they'll behave on Linux as well. They run in CI and are a bit complex, so let me know if you need any help!

@robert-ancell
Copy link
Contributor Author

I wonder if they'll behave on Linux as well. They run in CI and are a bit complex, so let me know if you need any help!

Almost. I've enabled the tests but disabled resize and fullscreen/maximize/minimize on Linux for now as setting these doesn't immediately return the same value when getting - we need to wait until the window has resized before this is the case. I assume that on win32 these are synchronous? Do we update the test to wait? Do we need more windowing API to do this consistently across platforms?

@mattkae
Copy link
Contributor

mattkae commented Sep 30, 2025

I wonder if they'll behave on Linux as well. They run in CI and are a bit complex, so let me know if you need any help!

Almost. I've enabled the tests but disabled resize and fullscreen/maximize/minimize on Linux for now as setting these doesn't immediately return the same value when getting - we need to wait until the window has resized before this is the case. I assume that on win32 these are synchronous? Do we update the test to wait? Do we need more windowing API to do this consistently across platforms?

We could update the tests to wait, if possible. It probably wouldn't be too hard, but we could explore that in a follow-up PR if we don't want to muddy the waters of this one. It is preferable to share the integration tests as our north star though ⭐

@auto-submit auto-submit bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Oct 13, 2025
@auto-submit
Copy link
Contributor

auto-submit bot commented Oct 13, 2025

autosubmit label was removed for flutter/flutter/176187, because - The status or check suite Mac tool_integration_tests_3_5 has failed. Please fix the issues identified (or deflake) before re-applying this label.

@robert-ancell robert-ancell added the autosubmit Merge PR when tree becomes green via auto submit App label Oct 14, 2025
@auto-submit auto-submit bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Oct 14, 2025
@auto-submit
Copy link
Contributor

auto-submit bot commented Oct 14, 2025

autosubmit label was removed for flutter/flutter/176187, because - The status or check suite Mac dart_plugin_registry_test has failed. Please fix the issues identified (or deflake) before re-applying this label.

@robert-ancell robert-ancell added this pull request to the merge queue Oct 14, 2025
Merged via the queue into flutter:master with commit cb94cc0 Oct 14, 2025
185 of 186 checks passed
@robert-ancell robert-ancell deleted the linux-windowing-owner branch October 14, 2025 22:26
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Oct 15, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Oct 15, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Oct 16, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Oct 16, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Oct 16, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Oct 16, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Oct 16, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Oct 16, 2025
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Oct 16, 2025
…10244)

Manual roll requested by [email protected]

flutter/flutter@7cd821c...a873a27

2025-10-16 [email protected] [tool] makes listing a shader also as an asset a build failure (flutter/flutter#176866)
2025-10-16 [email protected] Roll Packages from d062181 to 835dccb (7 revisions) (flutter/flutter#177100)
2025-10-16 [email protected] Handle the new location of Perfetto in create_updated_flutter_deps.py (flutter/flutter#177099)
2025-10-16 [email protected] Implement dialog windows for the win32 platform (flutter/flutter#176309)
2025-10-16 [email protected] `SelectableRegion` should not show flutter rendered context menu when web context menu is enabled (flutter/flutter#176855)
2025-10-16 [email protected] Manual roll Skia to 2d9df7c70b6f (flutter/flutter#177074)
2025-10-16 [email protected] feat: add `OptionsViewOpenDirection.mostSpace` to `RawAutocomplete` (flutter/flutter#172997)
2025-10-16 [email protected] [Android] Refactor `ImageReaderSurfaceProducer` restoration after app resumes (flutter/flutter#175937)
2025-10-15 [email protected] Refactor: migrate fade upwards page transition builder to widgets (flutter/flutter#175560)
2025-10-15 [email protected] Marks Windows windowing_test to be unflaky (flutter/flutter#176701)
2025-10-15 [email protected] fix: 🐛 Add equality and hashCode implementations to ScrollAwareImageProvider (flutter/flutter#175038)
2025-10-15 [email protected] Updates `sliver_tree.1.dart‎` to use `MediaQuery.widthOf(context)`  (flutter/flutter#176888)
2025-10-15 [email protected] [web] Fix focus issues in newer versions of Chrome (flutter/flutter#176938)
2025-10-15 [email protected] [Android 16] Update `android_engine_vulkan_tests` to Test Against SDK 36 Emulator (flutter/flutter#176985)
2025-10-15 [email protected] Fix key events interception by RadioGroup when no Radio is focused. (flutter/flutter#176335)
2025-10-15 [email protected] Update cherry-pick instructions to include instructions for pre-release CPs (flutter/flutter#177020)
2025-10-15 [email protected] Manual roll Skia to c501c727a007 (flutter/flutter#177015)
2025-10-15 [email protected] Update examples to latest Linux runner style (flutter/flutter#177033)
2025-10-15 [email protected] [material/menu_anchor.dart] Create internal menu controller if external controller is changed to null. (flutter/flutter#176375)
2025-10-15 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Fix - TalkBack does not announce list information (#174374)" (flutter/flutter#177062)
2025-10-14 [email protected] Implement Regular Windows for Linux (flutter/flutter#176187)
2025-10-14 [email protected] Fix - TalkBack does not announce list information (flutter/flutter#174374)

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
Please CC [email protected],[email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: 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
bufffun pushed a commit to bufffun/flutter that referenced this pull request Nov 26, 2025
# Conflicts:
#	dev/integration_tests/windowing_test/README.md
reidbaker pushed a commit to AbdeMohlbi/flutter that referenced this pull request Dec 10, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

a: desktop Running on desktop d: examples Sample code and demos engine flutter/engine related. See also e: labels. framework flutter/packages/flutter repository. See also f: labels. platform-linux Building on or for Linux specifically

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants