gl: Fix crash in cocoa due to race in gst_gl_context_activate()
We create a new context in gst_gl_context_create_thread()
and then
activate it on the current thread. Thereafter we assume that the
current thread continues to be the active thread for that context and
call gst_gl_context_fill_info()
which asserts that the current
thread is the active thread.
However, if at the same time a different thread calls
send_message_async()
, it will call into
gst_gl_window_cocoa_send_message_async()
which will schedule the
message to be invoked using GCD. That anonymous function will also
call gst_gl_context_activate()
, which creates a race, which can lead
to:
gst_gl_context_fill_info: assertion 'context->priv->active_thread == g_thread_self ()' failed
Fix it by using gst_gl_context_thread_add()
to invoke fill_info()
on the context.
Edited by Nirbheek Chauhan