gl: Call make_current() before doing any GL work
But don't call it too early, we only want to call it once we have prepared the target. This way, we guarantee that a GL context is always available and that it is bound to the correct target.
This commit is contained in:
@@ -203,11 +203,12 @@ gsk_gl_renderer_render (GskRenderer *renderer,
|
||||
viewport.size.width = gdk_surface_get_width (surface) * scale_factor;
|
||||
viewport.size.height = gdk_surface_get_height (surface) * scale_factor;
|
||||
|
||||
gdk_gl_context_make_current (self->context);
|
||||
gdk_draw_context_begin_frame_full (GDK_DRAW_CONTEXT (self->context),
|
||||
gsk_render_node_prefers_high_depth (root),
|
||||
update_area);
|
||||
|
||||
gdk_gl_context_make_current (self->context);
|
||||
|
||||
/* Must be called *AFTER* gdk_draw_context_begin_frame() */
|
||||
render_region = get_render_region (surface, self->context);
|
||||
|
||||
@@ -221,7 +222,6 @@ gsk_gl_renderer_render (GskRenderer *renderer,
|
||||
gsk_gl_driver_end_frame (self->driver);
|
||||
gsk_gl_render_job_free (job);
|
||||
|
||||
gdk_gl_context_make_current (self->context);
|
||||
gdk_draw_context_end_frame (GDK_DRAW_CONTEXT (self->context));
|
||||
|
||||
gsk_gl_driver_after_frame (self->driver);
|
||||
@@ -251,6 +251,8 @@ gsk_gl_renderer_render_texture (GskRenderer *renderer,
|
||||
|
||||
format = gsk_render_node_prefers_high_depth (root) ? GL_RGBA32F : GL_RGBA8;
|
||||
|
||||
gdk_gl_context_make_current (self->context);
|
||||
|
||||
if (gsk_gl_driver_create_render_target (self->driver,
|
||||
width, height,
|
||||
format,
|
||||
|
||||
Reference in New Issue
Block a user