@@ -10,10 +10,13 @@ struct _FlRendererGdk {
10
10
// Window being rendered on.
11
11
GdkWindow* window;
12
12
13
- // Main OpenGL rendering context.
13
+ // OpenGL rendering context used by GDK.
14
+ GdkGLContext* gdk_context;
15
+
16
+ // Main OpenGL rendering context used by Flutter.
14
17
GdkGLContext* main_context;
15
18
16
- // Secondary OpenGL rendering context.
19
+ // Secondary OpenGL rendering context used by Flutter .
17
20
GdkGLContext* resource_context;
18
21
};
19
22
@@ -56,6 +59,7 @@ static gdouble fl_renderer_gdk_get_refresh_rate(FlRenderer* renderer) {
56
59
static void fl_renderer_gdk_dispose (GObject* object) {
57
60
FlRendererGdk* self = FL_RENDERER_GDK (object);
58
61
62
+ g_clear_object (&self->gdk_context );
59
63
g_clear_object (&self->main_context );
60
64
g_clear_object (&self->resource_context );
61
65
@@ -82,6 +86,14 @@ FlRendererGdk* fl_renderer_gdk_new(GdkWindow* window) {
82
86
}
83
87
84
88
gboolean fl_renderer_gdk_create_contexts (FlRendererGdk* self, GError** error) {
89
+ self->gdk_context = gdk_window_create_gl_context (self->window , error);
90
+ if (self->gdk_context == nullptr ) {
91
+ return FALSE ;
92
+ }
93
+ if (!gdk_gl_context_realize (self->gdk_context , error)) {
94
+ return FALSE ;
95
+ }
96
+
85
97
self->main_context = gdk_window_create_gl_context (self->window , error);
86
98
if (self->main_context == nullptr ) {
87
99
return FALSE ;
@@ -103,5 +115,5 @@ gboolean fl_renderer_gdk_create_contexts(FlRendererGdk* self, GError** error) {
103
115
104
116
GdkGLContext* fl_renderer_gdk_get_context (FlRendererGdk* self) {
105
117
g_return_val_if_fail (FL_IS_RENDERER_GDK (self), nullptr );
106
- return self->main_context ;
118
+ return self->gdk_context ;
107
119
}
0 commit comments