| Flutter Linux Embedder |

Classes | Functions
fl_renderer_gdk.cc File Reference
`#include "flutter/shell/platform/linux/fl_renderer_gdk.h"`

Go to the source code of this file.

## Classes
struct | _FlRendererGdk

## Functions
static void | fl_renderer_gdk_make_current (FlRenderer *renderer)
static void | fl_renderer_gdk_make_resource_current (FlRenderer *renderer)
static void | fl_renderer_gdk_clear_current (FlRenderer *renderer)
static gdouble | fl_renderer_gdk_get_refresh_rate (FlRenderer *renderer)
static void | fl_renderer_gdk_dispose (GObject *object)
static void | fl_renderer_gdk_class_init (FlRendererGdkClass *klass)
static void | fl_renderer_gdk_init (FlRendererGdk *self)
FlRendererGdk * | fl_renderer_gdk_new ()
void | fl_renderer_gdk_set_window (FlRendererGdk *self, GdkWindow *window)
gboolean | fl_renderer_gdk_create_contexts (FlRendererGdk *self, GError **error)
GdkGLContext * | fl_renderer_gdk_get_context (FlRendererGdk *self)

## Function Documentation

## ◆ fl_renderer_gdk_class_init()

static void fl_renderer_gdk_class_init | ( | FlRendererGdkClass * | klass | ) |
| static

Definition at line 70 of file fl_renderer_gdk.cc.

70 {
71 G_OBJECT_CLASS(klass)->dispose = fl_renderer_gdk_dispose;
72
73 FL_RENDERER_CLASS(klass)->make_current = fl_renderer_gdk_make_current;
74 FL_RENDERER_CLASS(klass)->make_resource_current =
75 fl_renderer_gdk_make_resource_current;
76 FL_RENDERER_CLASS(klass)->clear_current = fl_renderer_gdk_clear_current;
77 FL_RENDERER_CLASS(klass)->get_refresh_rate = fl_renderer_gdk_get_refresh_rate;
78 }

References fl_renderer_gdk_clear_current(), fl_renderer_gdk_dispose(), fl_renderer_gdk_get_refresh_rate(), fl_renderer_gdk_make_current(), and fl_renderer_gdk_make_resource_current().

## ◆ fl_renderer_gdk_clear_current()

static void fl_renderer_gdk_clear_current | ( | FlRenderer * | renderer | ) |
| static

Definition at line 38 of file fl_renderer_gdk.cc.

38 {
39 gdk_gl_context_clear_current();
40 }

Referenced by fl_renderer_gdk_class_init().

## ◆ fl_renderer_gdk_create_contexts()

gboolean fl_renderer_gdk_create_contexts | ( | FlRendererGdk * | renderer,
|  | GError ** | error
| ) |  |

fl_renderer_gdk_create_contexts: @renderer: an #FlRendererGdk. @error: (allow-none): #GError location to store the error occurring, or NULL to ignore.

Create rendering contexts.

Returns: TRUE if contexts were created, FALSE if there was an error.

Definition at line 95 of file fl_renderer_gdk.cc.

95 {
96 g_return_val_if_fail(FL_IS_RENDERER_GDK(self), FALSE);
97
98 self->gdk_context = gdk_window_create_gl_context(self->window, error);
99 if (self->gdk_context == nullptr) {
100 return FALSE;
101 }
102 if (!gdk_gl_context_realize(self->gdk_context, error)) {
103 return FALSE;
104 }
105
106 self->main_context = gdk_window_create_gl_context(self->window, error);
107 if (self->main_context == nullptr) {
108 return FALSE;
109 }
110 if (!gdk_gl_context_realize(self->main_context, error)) {
111 return FALSE;
112 }
113
114 self->resource_context = gdk_window_create_gl_context(self->window, error);
115 if (self->resource_context == nullptr) {
116 return FALSE;
117 }
118 if (!gdk_gl_context_realize(self->resource_context, error)) {
119 return FALSE;
120 }
121
122 return TRUE;
123 }

References error, and TRUE.

Referenced by create_context_cb().

## ◆ fl_renderer_gdk_dispose()

static void fl_renderer_gdk_dispose | ( | GObject * | object | ) |
| static

Definition at line 60 of file fl_renderer_gdk.cc.

60 {
61 FlRendererGdk* self = FL_RENDERER_GDK(object);
62
63 g_clear_object(&self->gdk_context);
64 g_clear_object(&self->main_context);
65 g_clear_object(&self->resource_context);
66
67 G_OBJECT_CLASS(fl_renderer_gdk_parent_class)->dispose(object);
68 }

Referenced by fl_renderer_gdk_class_init().

## ◆ fl_renderer_gdk_get_context()

GdkGLContext* fl_renderer_gdk_get_context | ( | FlRendererGdk * | renderer | ) |

fl_renderer_gdk_get_context: @renderer: an #FlRendererGdk.

Returns: the main context used for rendering.

Definition at line 125 of file fl_renderer_gdk.cc.

125 {
126 g_return_val_if_fail(FL_IS_RENDERER_GDK(self), nullptr);
127 return self->gdk_context;
128 }

Referenced by create_context_cb().

## ◆ fl_renderer_gdk_get_refresh_rate()

static gdouble fl_renderer_gdk_get_refresh_rate | ( | FlRenderer * | renderer | ) |
| static

Definition at line 43 of file fl_renderer_gdk.cc.

43 {
44 FlRendererGdk* self = FL_RENDERER_GDK(renderer);
45 GdkDisplay* display = gdk_window_get_display(self->window);
46 GdkMonitor* monitor =
47 gdk_display_get_monitor_at_window(display, self->window);
48 if (monitor == nullptr) {
49 return -1.0;
50 }
51
52 int refresh_rate = gdk_monitor_get_refresh_rate(monitor);
53 if (refresh_rate <= 0) {
54 return -1.0;
55 }
56 // the return value is in milli-hertz, convert to hertz
57 return static_cast<gdouble>(refresh_rate) / 1000.0;
58 }

Referenced by fl_renderer_gdk_class_init().

## ◆ fl_renderer_gdk_init()

static void fl_renderer_gdk_init | ( | FlRendererGdk * | self | ) |
| static

Definition at line 80 of file fl_renderer_gdk.cc.

80 {}

## ◆ fl_renderer_gdk_make_current()

static void fl_renderer_gdk_make_current | ( | FlRenderer * | renderer | ) |
| static

Definition at line 26 of file fl_renderer_gdk.cc.

26 {
27 FlRendererGdk* self = FL_RENDERER_GDK(renderer);
28 gdk_gl_context_make_current(self->main_context);
29 }

Referenced by fl_renderer_gdk_class_init().

## ◆ fl_renderer_gdk_make_resource_current()

static void fl_renderer_gdk_make_resource_current | ( | FlRenderer * | renderer | ) |
| static

Definition at line 32 of file fl_renderer_gdk.cc.

32 {
33 FlRendererGdk* self = FL_RENDERER_GDK(renderer);
34 gdk_gl_context_make_current(self->resource_context);
35 }

Referenced by fl_renderer_gdk_class_init().

## ◆ fl_renderer_gdk_new()

FlRendererGdk* fl_renderer_gdk_new | ( |  | ) |

Definition at line 82 of file fl_renderer_gdk.cc.

82 {
83 FlRendererGdk* self =
84 FL_RENDERER_GDK(g_object_new(fl_renderer_gdk_get_type(), nullptr));
85 return self;
86 }

Referenced by fl_view_constructed().

## ◆ fl_renderer_gdk_set_window()

void fl_renderer_gdk_set_window | ( | FlRendererGdk * | renderer,
|  | GdkWindow * | window
| ) |  |

fl_renderer_gdk_set_window: @renderer: an #FlRendererGdk. @window: the window that is being rendered on.

Set the window that is being rendered on. This is only called once when the window is available.

Definition at line 88 of file fl_renderer_gdk.cc.

88 {
89 g_return_if_fail(FL_IS_RENDERER_GDK(self));
90
91 g_assert(self->window == nullptr);
92 self->window = window;
93 }

Referenced by create_context_cb().

fl_renderer_gdk_clear_current
static void fl_renderer_gdk_clear_current(FlRenderer *renderer)
Definition: fl_renderer_gdk.cc:38
fl_renderer_gdk_make_resource_current
static void fl_renderer_gdk_make_resource_current(FlRenderer *renderer)
Definition: fl_renderer_gdk.cc:32
TRUE
return TRUE
Definition: fl_pixel_buffer_texture_test.cc:53
fl_renderer_gdk_get_refresh_rate
static gdouble fl_renderer_gdk_get_refresh_rate(FlRenderer *renderer)
Definition: fl_renderer_gdk.cc:43
error
const uint8_t uint32_t uint32_t GError ** error
Definition: fl_pixel_buffer_texture_test.cc:40
fl_renderer_gdk_make_current
static void fl_renderer_gdk_make_current(FlRenderer *renderer)
Definition: fl_renderer_gdk.cc:26
fl_renderer_gdk_dispose
static void fl_renderer_gdk_dispose(GObject *object)
Definition: fl_renderer_gdk.cc:60