playbin3: Fix deadlock when adding multiple parsebin
authorWonchul Lee <wonchul.lee@collabora.com>
Mon, 17 Oct 2016 06:38:37 +0000 (15:38 +0900)
committerJan Schmidt <jan@centricular.com>
Tue, 15 Nov 2016 09:37:00 +0000 (20:37 +1100)
https://bugzilla.gnome.org/show_bug.cgi?id=773131

gst/playback/gstplaybin3.c

index fdf0c82..3c5bd47 100644 (file)
@@ -4523,6 +4523,7 @@ urisrc_pad_added (GstElement * urisrc, GstPad * pad, GstSourceGroup * group)
       sinkpad = NULL;
     }
   }
+  GST_SOURCE_GROUP_UNLOCK (group);
 
   if (sinkpad == NULL) {
     /* Auxiliary stream, request a new pad from decodebin */
@@ -4541,7 +4542,6 @@ urisrc_pad_added (GstElement * urisrc, GstPad * pad, GstSourceGroup * group)
     if (GST_PAD_LINK_FAILED (res))
       goto link_failed;
   }
-  GST_SOURCE_GROUP_UNLOCK (group);
   return;
 
 link_failed:
@@ -4549,7 +4549,6 @@ link_failed:
     GST_ERROR_OBJECT (playbin,
         "failed to link pad %s:%s to decodebin, reason %s (%d)",
         GST_DEBUG_PAD_NAME (pad), gst_pad_link_get_name (res), res);
-    GST_SOURCE_GROUP_UNLOCK (group);
     return;
   }
 }