 |
Flutter Linux Embedder
|
|
Go to the documentation of this file.
10 #include "flutter/shell/platform/embedder/embedder.h"
38 fl_renderer_get_instance_private(
self));
39 if (
priv->blocking_main_thread) {
40 priv->blocking_main_thread =
false;
42 FlTaskRunner* runner =
50 G_OBJECT_CLASS(fl_renderer_parent_class)->dispose(
self);
60 g_return_val_if_fail(FL_IS_RENDERER(
self), FALSE);
62 fl_renderer_get_instance_private(
self));
64 gboolean
result = FL_RENDERER_GET_CLASS(
self)->create_contexts(
65 self, GTK_WIDGET(view), &
priv->main_context, &
priv->resource_context,
69 gdk_gl_context_realize(
priv->main_context,
error);
70 gdk_gl_context_realize(
priv->resource_context,
error);
73 if (*
error !=
nullptr) {
81 fl_renderer_get_instance_private(
self));
87 fl_renderer_get_instance_private(
self));
88 return priv->main_context;
92 return reinterpret_cast<void*
>(eglGetProcAddress(name));
97 fl_renderer_get_instance_private(
self));
98 if (
priv->main_context) {
99 gdk_gl_context_make_current(
priv->main_context);
107 fl_renderer_get_instance_private(
self));
108 if (
priv->resource_context) {
109 gdk_gl_context_make_current(
priv->resource_context);
116 gdk_gl_context_clear_current();
127 const FlutterBackingStoreConfig* config,
128 FlutterBackingStore* backing_store_out) {
129 return FL_RENDERER_GET_CLASS(
self)->create_backing_store(
self, config,
135 const FlutterBackingStore* backing_store) {
136 return FL_RENDERER_GET_CLASS(
self)->collect_backing_store(
self,
144 fl_renderer_get_instance_private(
self));
146 priv->target_width = target_width;
147 priv->target_height = target_height;
149 if (
priv->had_first_frame && !
priv->blocking_main_thread) {
150 priv->blocking_main_thread =
true;
151 FlTaskRunner* runner =
158 const FlutterLayer** layers,
159 size_t layers_count) {
161 fl_renderer_get_instance_private(
self));
165 if (
priv->blocking_main_thread && layers_count == 1 &&
166 layers[0]->offset.x == 0 && layers[0]->offset.y == 0 &&
167 (layers[0]->size.width !=
priv->target_width ||
168 layers[0]->size.height !=
priv->target_height)) {
172 priv->had_first_frame =
true;
176 return FL_RENDERER_GET_CLASS(
self)->present_layers(
self, layers,
void fl_renderer_wait_for_frame(FlRenderer *self, int target_width, int target_height)
GQuark fl_renderer_error_quark(void) G_GNUC_CONST
G_DEFINE_TYPE_WITH_PRIVATE(FlTextInputPlugin, fl_text_input_plugin, G_TYPE_OBJECT) static gboolean finish_method(GObject *object
static void fl_renderer_init(FlRenderer *self)
FlView * fl_renderer_get_view(FlRenderer *self)
GdkGLContext * resource_context
FlPixelBufferTexturePrivate * priv
gboolean fl_renderer_clear_current(FlRenderer *self, GError **error)
void * fl_renderer_get_proc_address(FlRenderer *self, const char *name)
static void fl_renderer_dispose(GObject *self)
gboolean fl_renderer_make_resource_current(FlRenderer *self, GError **error)
bool blocking_main_thread
G_DEFINE_QUARK(fl_binary_messenger_codec_error_quark, fl_binary_messenger_codec_error) G_DECLARE_FINAL_TYPE(FlBinaryMessengerImpl
static void fl_renderer_class_init(FlRendererClass *klass)
gboolean fl_renderer_collect_backing_store(FlRenderer *self, const FlutterBackingStore *backing_store)
gboolean fl_renderer_present_layers(FlRenderer *self, const FlutterLayer **layers, size_t layers_count)
G_MODULE_EXPORT FlEngine * fl_view_get_engine(FlView *self)
static void fl_renderer_unblock_main_thread(FlRenderer *self)
void fl_task_runner_release_main_thread(FlTaskRunner *self)
gboolean fl_renderer_start(FlRenderer *self, FlView *view, GError **error)
const uint8_t uint32_t uint32_t GError ** error
FlTaskRunner * fl_engine_get_task_runner(FlEngine *self)
GdkGLContext * main_context
gboolean fl_renderer_create_backing_store(FlRenderer *self, const FlutterBackingStoreConfig *config, FlutterBackingStore *backing_store_out)
gboolean fl_renderer_make_current(FlRenderer *self, GError **error)
guint32 fl_renderer_get_fbo(FlRenderer *self)
void fl_task_runner_block_main_thread(FlTaskRunner *self)
GdkGLContext * fl_renderer_get_context(FlRenderer *self)