splitmuxsrc: Drop lock shutting down pads
authorJan Schmidt <jan@centricular.com>
Wed, 28 Sep 2016 17:21:26 +0000 (03:21 +1000)
committerJan Schmidt <jan@centricular.com>
Fri, 30 Sep 2016 14:12:41 +0000 (00:12 +1000)
Avoid a sporadic deadlock on shutdown by dropping
the splitmux lock around pad shutdown

https://bugzilla.gnome.org/show_bug.cgi?id=772138

gst/multifile/gstsplitmuxsrc.c

index 9853e20..383e8b5 100644 (file)
@@ -750,12 +750,14 @@ gst_splitmux_src_stop (GstSplitMuxSrc * splitmux)
   splitmux->pads = NULL;
   SPLITMUX_SRC_PADS_UNLOCK (splitmux);
 
+  SPLITMUX_SRC_UNLOCK (splitmux);
   for (cur = g_list_first (pads_list); cur != NULL; cur = g_list_next (cur)) {
     SplitMuxSrcPad *tmp = (SplitMuxSrcPad *) (cur->data);
     gst_pad_stop_task (GST_PAD (tmp));
     gst_element_remove_pad (GST_ELEMENT (splitmux), GST_PAD (tmp));
   }
   g_list_free (pads_list);
+  SPLITMUX_SRC_LOCK (splitmux);
 
   g_free (splitmux->parts);
   splitmux->parts = NULL;