Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Conversation

@robert-ancell
Copy link
Contributor

While only one view works at this point in the future this will allow a runner to create multiple views.

To make use of this the runner template would have the following changes:

diff --git a/linux/my_application.cc b/linux/my_application.cc
index 7083591..e56f6d8 100644
--- a/linux/my_application.cc
+++ b/linux/my_application.cc
@@ -10,6 +10,8 @@
 struct _MyApplication {
   GtkApplication parent_instance;
   char** dart_entrypoint_arguments;
+
+  FlEngine* engine;
 };
 
 G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION)
@@ -53,7 +55,9 @@ static void my_application_activate(GApplication* application) {
   g_autoptr(FlDartProject) project = fl_dart_project_new();
   fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments);
 
-  FlView* view = fl_view_new(project);
+  self->engine = fl_engine_new(project);
+
+  FlView* view = fl_view_new_for_engine(self->engine);
   gtk_widget_show(GTK_WIDGET(view));
   gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view));
 
@@ -103,6 +107,7 @@ static void my_application_shutdown(GApplication* application) {
 static void my_application_dispose(GObject* object) {
   MyApplication* self = MY_APPLICATION(object);
   g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev);
+  g_clear_object(&self->engine);
   G_OBJECT_CLASS(my_application_parent_class)->dispose(object);
 }

Set everything up in the construction function, instead using properties and a
constructed vfunc. While this is the pure GObject way of doing things we
haven't done it in any other classes in Flutter and it is more complex than
doing it all in one function. We no longer need to keep the project ref in the
FlView which is never used beyond construction.
While only one view works at this point in the future this will
allow a runner to create multiple views.
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!

LGTM stamp from a Japanese personal seal

@robert-ancell robert-ancell merged commit b1ae9ca into flutter:main Jul 25, 2024
@robert-ancell robert-ancell deleted the linux-extract-engine-from-view branch July 25, 2024 07:45
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Jul 25, 2024
auto-submit bot pushed a commit to flutter/flutter that referenced this pull request Jul 25, 2024
…152314)

flutter/engine@7473782...f47b4d8

2024-07-25 [email protected] Roll Skia from 9942b4423e4d to 75994403a8a4 (1 revision) (flutter/engine#54108)
2024-07-25 [email protected] Roll Dart SDK from 8389a7bb94f4 to a9eb9553033c (1 revision) (flutter/engine#54107)
2024-07-25 [email protected] Roll Fuchsia Linux SDK from qA7S-DZ5FyMtcM7_J... to pkL7F9aPLbFBRhsoL... (flutter/engine#54103)
2024-07-25 [email protected] Roll Skia from 746d444f3efd to 9942b4423e4d (4 revisions) (flutter/engine#54104)
2024-07-25 [email protected] Allow creating views from an external engine (flutter/engine#54080)
2024-07-25 [email protected] Support multiple views in FlRenderer (flutter/engine#54072)
2024-07-25 [email protected] Roll Dart SDK from 693848f200d7 to 8389a7bb94f4 (1 revision) (flutter/engine#54100)

Also rolling transitive DEPS:
  fuchsia/sdk/core/linux-amd64 from qA7S-DZ5FyMt to pkL7F9aPLbFB

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 [email protected],[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
TytaniumDev pushed a commit to TytaniumDev/flutter that referenced this pull request Aug 7, 2024
…lutter#152314)

flutter/engine@7473782...f47b4d8

2024-07-25 [email protected] Roll Skia from 9942b4423e4d to 75994403a8a4 (1 revision) (flutter/engine#54108)
2024-07-25 [email protected] Roll Dart SDK from 8389a7bb94f4 to a9eb9553033c (1 revision) (flutter/engine#54107)
2024-07-25 [email protected] Roll Fuchsia Linux SDK from qA7S-DZ5FyMtcM7_J... to pkL7F9aPLbFBRhsoL... (flutter/engine#54103)
2024-07-25 [email protected] Roll Skia from 746d444f3efd to 9942b4423e4d (4 revisions) (flutter/engine#54104)
2024-07-25 [email protected] Allow creating views from an external engine (flutter/engine#54080)
2024-07-25 [email protected] Support multiple views in FlRenderer (flutter/engine#54072)
2024-07-25 [email protected] Roll Dart SDK from 693848f200d7 to 8389a7bb94f4 (1 revision) (flutter/engine#54100)

Also rolling transitive DEPS:
  fuchsia/sdk/core/linux-amd64 from qA7S-DZ5FyMt to pkL7F9aPLbFB

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 [email protected],[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
Buchimi pushed a commit to Buchimi/flutter that referenced this pull request Sep 2, 2024
…lutter#152314)

flutter/engine@7473782...f47b4d8

2024-07-25 [email protected] Roll Skia from 9942b4423e4d to 75994403a8a4 (1 revision) (flutter/engine#54108)
2024-07-25 [email protected] Roll Dart SDK from 8389a7bb94f4 to a9eb9553033c (1 revision) (flutter/engine#54107)
2024-07-25 [email protected] Roll Fuchsia Linux SDK from qA7S-DZ5FyMtcM7_J... to pkL7F9aPLbFBRhsoL... (flutter/engine#54103)
2024-07-25 [email protected] Roll Skia from 746d444f3efd to 9942b4423e4d (4 revisions) (flutter/engine#54104)
2024-07-25 [email protected] Allow creating views from an external engine (flutter/engine#54080)
2024-07-25 [email protected] Support multiple views in FlRenderer (flutter/engine#54072)
2024-07-25 [email protected] Roll Dart SDK from 693848f200d7 to 8389a7bb94f4 (1 revision) (flutter/engine#54100)

Also rolling transitive DEPS:
  fuchsia/sdk/core/linux-amd64 from qA7S-DZ5FyMt to pkL7F9aPLbFB

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 [email protected],[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
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants