glcontext: fix race joining thread on finalize
authorVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Mon, 15 Aug 2016 15:14:25 +0000 (16:14 +0100)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 9 Dec 2017 19:32:21 +0000 (19:32 +0000)
https://bugzilla.gnome.org/show_bug.cgi?id=769939

gst-libs/gst/gl/gstglcontext.c

index d222e08..2bc0a78 100644 (file)
@@ -642,7 +642,14 @@ gst_gl_context_finalize (GObject * object)
       gst_gl_window_quit (context->window);
 
       GST_INFO_OBJECT (context, "joining gl thread");
-      g_thread_join (context->priv->gl_thread);
+      g_mutex_lock (&context->priv->render_lock);
+      if (context->priv->alive) {
+        GThread *t = context->priv->gl_thread;
+        g_mutex_unlock (&context->priv->render_lock);
+        g_thread_join (t);
+      } else {
+        g_mutex_unlock (&context->priv->render_lock);
+      }
       GST_INFO_OBJECT (context, "gl thread joined");
       context->priv->gl_thread = NULL;
     }