parsebin: Check for shutdown before exposing pads
authorEdward Hervey <edward@centricular.com>
Fri, 10 Nov 2017 13:22:38 +0000 (14:22 +0100)
committerEdward Hervey <bilboed@bilboed.com>
Fri, 10 Nov 2017 16:06:10 +0000 (17:06 +0100)
We already checked previously, but we need to do it before adding
pads.

gst/playback/gstparsebin.c

index 0768056..d384b75 100644 (file)
@@ -3539,6 +3539,15 @@ retry:
   /* re-order pads : video, then audio, then others */
   endpads = g_list_sort (endpads, (GCompareFunc) sort_end_pads);
 
+  /* Don't expose if we're currently shutting down */
+  DYN_LOCK (parsebin);
+  if (G_UNLIKELY (parsebin->shutdown)) {
+    GST_WARNING_OBJECT (parsebin,
+        "Currently, shutting down, aborting exposing");
+    DYN_UNLOCK (parsebin);
+    return FALSE;
+  }
+
   /* Expose pads */
   for (tmp = endpads; tmp; tmp = tmp->next) {
     GstParsePad *parsepad = (GstParsePad *) tmp->data;
@@ -3578,6 +3587,8 @@ retry:
     GST_INFO_OBJECT (parsepad, "added new parsed pad");
   }
 
+  DYN_UNLOCK (parsebin);
+
   /* Unblock internal pads. The application should have connected stuff now
    * so that streaming can continue. */
   for (tmp = endpads; tmp; tmp = tmp->next) {