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

Handle external window's WM_CLOSE in lifecycle manager #45840

Merged
merged 4 commits into from
Sep 14, 2023

Conversation

yaakovschectman
Copy link
Contributor

Handle the close messages from non-Flutter windows similarly to how we handle our own, for graceful app exit purposes.

flutter/flutter#131497

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 Flutter Style Guide and the C++, Objective-C, Java style guides.
  • I listed at least one issue that this PR fixes in the description above.
  • I added new tests to check the change I am making or feature I am adding, or the PR is test-exempt. See testing the engine for instructions on writing and running engine tests.
  • I updated/added relevant documentation (doc comments with ///).
  • I signed the CLA.
  • All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

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.

Looks great; just one small suggestion. Thanks!

@@ -99,6 +99,8 @@ class WindowsLifecycleManager {
LPARAM lparam);

private:
bool HandleCloseMessage(HWND hwnd, WPARAM wparam, LPARAM lparam);
Copy link
Member

Choose a reason for hiding this comment

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

I know it's a private method, but consider adding a small doc string that describes the behaviour relative to tracking window count and triggering engine shutdown when the last one closes.

Copy link
Contributor

@gspencergoog gspencergoog left a comment

Choose a reason for hiding this comment

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

32384589-a60f0e74-c078-11e7-9bc1-e5b5287aea9d

@yaakovschectman yaakovschectman merged commit f5f1a96 into flutter:main Sep 14, 2023
25 checks passed
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Sep 14, 2023
zanderso pushed a commit to flutter/flutter that referenced this pull request Sep 16, 2023
…134791)

flutter/engine@45bc430...67dd12f

2023-09-14 skia-flutter-autoroll@skia.org Roll Dart SDK from
d25e8d682c8f to 7e4d9f4d8e52 (3 revisions) (flutter/engine#45854)
2023-09-14 kustermann@google.com Remove @pragma('vm:entry-point')
annotations on members that aren't accessed from C++
(flutter/engine#45697)
2023-09-14 skia-flutter-autoroll@skia.org Roll Skia from 6bc9f5886ddf to
9b7c116ed6c2 (1 revision) (flutter/engine#45853)
2023-09-14 54558023+keyonghan@users.noreply.github.com Switch
linux_android_debug_engine from goma to reclient (flutter/engine#45345)
2023-09-14 54558023+keyonghan@users.noreply.github.com Switch goma to
reclient fro standalone targets (flutter/engine#45804)
2023-09-14 109111084+yaakovschectman@users.noreply.github.com Handle
external window's `WM_CLOSE` in lifecycle manager (flutter/engine#45840)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC bdero@google.com,rmistry@google.com,zra@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
Mairramer pushed a commit to Mairramer/flutter that referenced this pull request Oct 10, 2023
…lutter#134791)

flutter/engine@45bc430...67dd12f

2023-09-14 skia-flutter-autoroll@skia.org Roll Dart SDK from
d25e8d682c8f to 7e4d9f4d8e52 (3 revisions) (flutter/engine#45854)
2023-09-14 kustermann@google.com Remove @pragma('vm:entry-point')
annotations on members that aren't accessed from C++
(flutter/engine#45697)
2023-09-14 skia-flutter-autoroll@skia.org Roll Skia from 6bc9f5886ddf to
9b7c116ed6c2 (1 revision) (flutter/engine#45853)
2023-09-14 54558023+keyonghan@users.noreply.github.com Switch
linux_android_debug_engine from goma to reclient (flutter/engine#45345)
2023-09-14 54558023+keyonghan@users.noreply.github.com Switch goma to
reclient fro standalone targets (flutter/engine#45804)
2023-09-14 109111084+yaakovschectman@users.noreply.github.com Handle
external window's `WM_CLOSE` in lifecycle manager (flutter/engine#45840)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC bdero@google.com,rmistry@google.com,zra@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
harryterkelsen pushed a commit that referenced this pull request Oct 23, 2023
Handle the close messages from non-Flutter windows similarly to how we
handle our own, for graceful app exit purposes.

flutter/flutter#131497

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide] and the [C++,
Objective-C, Java style guides].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I added new tests to check the change I am making or feature I am
adding, or the PR is [test-exempt]. See [testing the engine] for
instructions on writing and running engine tests.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [ ] I signed the [CLA].
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#overview
[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
[test-exempt]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo
[C++, Objective-C, Java style guides]:
https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
[testing the engine]:
https://github.com/flutter/flutter/wiki/Testing-the-engine
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/wiki/Chat
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
3 participants