Merge branch 'wip/smcv/issue6995' into 'main'

gdkgltexture: Avoid use-after-free when switching GdkGLContext

Closes #6995

See merge request GNOME/gtk!7703
This commit is contained in:
Matthias Clasen 2024-09-10 11:23:30 +00:00
commit 97a2c3a656

View File

@ -101,6 +101,10 @@ gdk_gl_texture_invoke_callback (gpointer data)
context = gdk_display_get_gl_context (gdk_gl_context_get_display (invoke->self->context)); context = gdk_display_get_gl_context (gdk_gl_context_get_display (invoke->self->context));
previous = gdk_gl_context_get_current (); previous = gdk_gl_context_get_current ();
if (previous)
g_object_ref (previous);
gdk_gl_context_make_current (context); gdk_gl_context_make_current (context);
if (invoke->self->sync && context != invoke->self->context) if (invoke->self->sync && context != invoke->self->context)
@ -113,9 +117,14 @@ gdk_gl_texture_invoke_callback (gpointer data)
g_atomic_int_set (&invoke->spinlock, 1); g_atomic_int_set (&invoke->spinlock, 1);
if (previous) if (previous)
gdk_gl_context_make_current (previous); {
gdk_gl_context_make_current (previous);
g_object_unref (previous);
}
else else
gdk_gl_context_clear_current (); {
gdk_gl_context_clear_current ();
}
return FALSE; return FALSE;
} }