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

Commit c68ca7e

Browse files
committed
Move platform handler from FlView to FlEngine
1 parent c5f301b commit c68ca7e

File tree

3 files changed

+22
-5
lines changed

3 files changed

+22
-5
lines changed

shell/platform/linux/fl_engine.cc

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include "flutter/shell/platform/linux/fl_dart_project_private.h"
1616
#include "flutter/shell/platform/linux/fl_engine_private.h"
1717
#include "flutter/shell/platform/linux/fl_pixel_buffer_texture_private.h"
18+
#include "flutter/shell/platform/linux/fl_platform_handler.h"
1819
#include "flutter/shell/platform/linux/fl_plugin_registrar_private.h"
1920
#include "flutter/shell/platform/linux/fl_renderer.h"
2021
#include "flutter/shell/platform/linux/fl_renderer_gdk.h"
@@ -42,6 +43,7 @@ struct _FlEngine {
4243
FlRenderer* renderer;
4344
FlBinaryMessenger* binary_messenger;
4445
FlSettingsHandler* settings_handler;
46+
FlPlatformHandler* platform_handler;
4547
FlTextureRegistrar* texture_registrar;
4648
FlTaskRunner* task_runner;
4749
FlutterEngineAOTData aot_data;
@@ -426,6 +428,7 @@ static void fl_engine_dispose(GObject* object) {
426428
g_clear_object(&self->texture_registrar);
427429
g_clear_object(&self->binary_messenger);
428430
g_clear_object(&self->settings_handler);
431+
g_clear_object(&self->platform_handler);
429432
g_clear_object(&self->task_runner);
430433

431434
if (self->platform_message_handler_destroy_notify) {
@@ -604,6 +607,8 @@ gboolean fl_engine_start(FlEngine* self, GError** error) {
604607
self->settings_handler = fl_settings_handler_new(self);
605608
fl_settings_handler_start(self->settings_handler, settings);
606609

610+
self->platform_handler = fl_platform_handler_new(self->binary_messenger);
611+
607612
result = self->embedder_api.UpdateSemanticsEnabled(self->engine, TRUE);
608613
if (result != kSuccess) {
609614
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) {
10221027
}
10231028

10241029
GPtrArray* fl_engine_get_switches(FlEngine* self) {
1030+
g_return_val_if_fail(FL_IS_ENGINE(self), nullptr);
1031+
10251032
GPtrArray* switches = g_ptr_array_new_with_free_func(g_free);
10261033
for (const auto& env_switch : flutter::GetSwitchesFromEnvironment()) {
10271034
g_ptr_array_add(switches, g_strdup(env_switch.c_str()));
10281035
}
10291036
return switches;
10301037
}
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+
}

shell/platform/linux/fl_engine_private.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -418,14 +418,22 @@ void fl_engine_update_accessibility_features(FlEngine* engine, int32_t flags);
418418

419419
/**
420420
* fl_engine_get_switches:
421-
* @project: an #FlEngine.
421+
* @engine: an #FlEngine.
422422
*
423423
* Determines the switches that should be passed to the Flutter engine.
424424
*
425425
* Returns: an array of switches to pass to the Flutter engine.
426426
*/
427427
GPtrArray* fl_engine_get_switches(FlEngine* engine);
428428

429+
/**
430+
* fl_engine_request_app_exit:
431+
* @engine: an #FlEngine.
432+
*
433+
* Request the application exits.
434+
*/
435+
void fl_engine_request_app_exit(FlEngine* engine);
436+
429437
G_END_DECLS
430438

431439
#endif // FLUTTER_SHELL_PLATFORM_LINUX_FL_ENGINE_PRIVATE_H_

shell/platform/linux/fl_view.cc

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ struct _FlView {
7070
FlKeyboardHandler* keyboard_handler;
7171
FlTextInputHandler* text_input_handler;
7272
FlMouseCursorHandler* mouse_cursor_handler;
73-
FlPlatformHandler* platform_handler;
7473

7574
GtkWidget* event_box;
7675
GtkGLArea* gl_area;
@@ -128,7 +127,7 @@ static gboolean first_frame_idle_cb(gpointer user_data) {
128127

129128
// Signal handler for GtkWidget::delete-event
130129
static gboolean window_delete_event_cb(FlView* self) {
131-
fl_platform_handler_request_app_exit(self->platform_handler);
130+
fl_engine_request_app_exit(self->engine);
132131
// Stop the event from propagating.
133132
return TRUE;
134133
}
@@ -573,7 +572,6 @@ static GdkGLContext* create_context_cb(FlView* self) {
573572
FlBinaryMessenger* messenger = fl_engine_get_binary_messenger(self->engine);
574573
init_scrolling(self);
575574
self->mouse_cursor_handler = fl_mouse_cursor_handler_new(messenger, self);
576-
self->platform_handler = fl_platform_handler_new(messenger);
577575

578576
g_autoptr(GError) error = nullptr;
579577
if (!fl_renderer_gdk_create_contexts(self->renderer, &error)) {
@@ -702,7 +700,6 @@ static void fl_view_dispose(GObject* object) {
702700
g_clear_object(&self->keyboard_manager);
703701
g_clear_object(&self->keyboard_handler);
704702
g_clear_object(&self->mouse_cursor_handler);
705-
g_clear_object(&self->platform_handler);
706703
g_clear_object(&self->view_accessible);
707704
g_clear_object(&self->cancellable);
708705

0 commit comments

Comments
 (0)