|
15 | 15 | #include "flutter/shell/platform/linux/fl_dart_project_private.h" |
16 | 16 | #include "flutter/shell/platform/linux/fl_engine_private.h" |
17 | 17 | #include "flutter/shell/platform/linux/fl_pixel_buffer_texture_private.h" |
| 18 | +#include "flutter/shell/platform/linux/fl_platform_handler.h" |
18 | 19 | #include "flutter/shell/platform/linux/fl_plugin_registrar_private.h" |
19 | 20 | #include "flutter/shell/platform/linux/fl_renderer.h" |
20 | 21 | #include "flutter/shell/platform/linux/fl_renderer_gdk.h" |
@@ -42,6 +43,7 @@ struct _FlEngine { |
42 | 43 | FlRenderer* renderer; |
43 | 44 | FlBinaryMessenger* binary_messenger; |
44 | 45 | FlSettingsHandler* settings_handler; |
| 46 | + FlPlatformHandler* platform_handler; |
45 | 47 | FlTextureRegistrar* texture_registrar; |
46 | 48 | FlTaskRunner* task_runner; |
47 | 49 | FlutterEngineAOTData aot_data; |
@@ -426,6 +428,7 @@ static void fl_engine_dispose(GObject* object) { |
426 | 428 | g_clear_object(&self->texture_registrar); |
427 | 429 | g_clear_object(&self->binary_messenger); |
428 | 430 | g_clear_object(&self->settings_handler); |
| 431 | + g_clear_object(&self->platform_handler); |
429 | 432 | g_clear_object(&self->task_runner); |
430 | 433 |
|
431 | 434 | if (self->platform_message_handler_destroy_notify) { |
@@ -604,6 +607,8 @@ gboolean fl_engine_start(FlEngine* self, GError** error) { |
604 | 607 | self->settings_handler = fl_settings_handler_new(self); |
605 | 608 | fl_settings_handler_start(self->settings_handler, settings); |
606 | 609 |
|
| 610 | + self->platform_handler = fl_platform_handler_new(self->binary_messenger); |
| 611 | + |
607 | 612 | result = self->embedder_api.UpdateSemanticsEnabled(self->engine, TRUE); |
608 | 613 | if (result != kSuccess) { |
609 | 614 | g_warning("Failed to enable accessibility features on Flutter engine"); |
@@ -1022,9 +1027,16 @@ void fl_engine_update_accessibility_features(FlEngine* self, int32_t flags) { |
1022 | 1027 | } |
1023 | 1028 |
|
1024 | 1029 | GPtrArray* fl_engine_get_switches(FlEngine* self) { |
| 1030 | + g_return_val_if_fail(FL_IS_ENGINE(self), nullptr); |
| 1031 | + |
1025 | 1032 | GPtrArray* switches = g_ptr_array_new_with_free_func(g_free); |
1026 | 1033 | for (const auto& env_switch : flutter::GetSwitchesFromEnvironment()) { |
1027 | 1034 | g_ptr_array_add(switches, g_strdup(env_switch.c_str())); |
1028 | 1035 | } |
1029 | 1036 | return switches; |
1030 | 1037 | } |
| 1038 | + |
| 1039 | +void fl_engine_request_app_exit(FlEngine* self) { |
| 1040 | + g_return_if_fail(FL_IS_ENGINE(self)); |
| 1041 | + fl_platform_handler_request_app_exit(self->platform_handler); |
| 1042 | +} |
0 commit comments