Commit 6445569a authored by Matthew Waters's avatar Matthew Waters 🐨 Committed by Tim-Philipp Müller

glwindow: track context activation properly

We only need to deactivate/reactivate the context iff it was already
active.
parent 03908c67
......@@ -300,12 +300,28 @@ _set_window_handle_cb (GstSetWindowHandleCb * data)
{
GstGLContext *context = gst_gl_window_get_context (data->window);
GstGLWindowClass *window_class = GST_GL_WINDOW_GET_CLASS (data->window);
GThread *thread = NULL;
/* deactivate if necessary */
if (context) {
thread = gst_gl_context_get_thread (context);
if (thread) {
/* This is only thread safe iff the context thread == g_thread_self() */
g_assert (thread == g_thread_self ());
gst_gl_context_activate (context, FALSE);
}
}
gst_gl_context_activate (context, FALSE);
window_class->set_window_handle (data->window, data->handle);
gst_gl_context_activate (context, TRUE);
gst_object_unref (context);
/* reactivate */
if (context && thread)
gst_gl_context_activate (context, TRUE);
if (context)
gst_object_unref (context);
if (thread)
g_thread_unref (thread);
}
static void
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment