mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 04:01:08 +00:00
ed1bdf9b1a
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. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3732> |
||
---|---|---|
.. | ||
android | ||
cocoa | ||
dispmanx | ||
eagl | ||
egl | ||
gbm | ||
glprototypes | ||
utils | ||
viv-fb | ||
wayland | ||
wgl | ||
win32 | ||
winrt | ||
x11 | ||
gl-prelude.h | ||
gl.h | ||
gl_mkenum.py | ||
gstgl_enums.h | ||
gstgl_fwd.h | ||
gstglapi.c | ||
gstglapi.h | ||
gstglbasefilter.c | ||
gstglbasefilter.h | ||
gstglbasememory.c | ||
gstglbasememory.h | ||
gstglbasesrc.c | ||
gstglbasesrc.h | ||
gstglbuffer.c | ||
gstglbuffer.h | ||
gstglbufferpool.c | ||
gstglbufferpool.h | ||
gstglcolorconvert.c | ||
gstglcolorconvert.h | ||
gstglconfig.h.meson | ||
gstglcontext.c | ||
gstglcontext.h | ||
gstglcontext_private.h | ||
gstglcontextconfig.c | ||
gstglcontextconfig.h | ||
gstglcontextquirks.c | ||
gstgldebug.c | ||
gstgldebug.h | ||
gstgldisplay.c | ||
gstgldisplay.h | ||
gstglfeature.c | ||
gstglfeature.h | ||
gstglfeature_private.h | ||
gstglfilter.c | ||
gstglfilter.h | ||
gstglformat.c | ||
gstglformat.h | ||
gstglframebuffer.c | ||
gstglframebuffer.h | ||
gstglfuncs.h | ||
gstglmemory.c | ||
gstglmemory.h | ||
gstglmemorypbo.c | ||
gstglmemorypbo.h | ||
gstgloverlaycompositor.c | ||
gstgloverlaycompositor.h | ||
gstglpixelformat.c | ||
gstglquery.c | ||
gstglquery.h | ||
gstglrenderbuffer.c | ||
gstglrenderbuffer.h | ||
gstglshader.c | ||
gstglshader.h | ||
gstglshaderstrings.c | ||
gstglshaderstrings.h | ||
gstglsl.c | ||
gstglsl.h | ||
gstglsl_private.h | ||
gstglslstage.c | ||
gstglslstage.h | ||
gstglsyncmeta.c | ||
gstglsyncmeta.h | ||
gstglupload.c | ||
gstglupload.h | ||
gstglutils.c | ||
gstglutils.h | ||
gstglutils_private.h | ||
gstglviewconvert.c | ||
gstglviewconvert.h | ||
gstglwindow.c | ||
gstglwindow.h | ||
gstglwindow_private.h | ||
meson.build |