pbutils: discoverer: Always set the pipeline back to NULL after an error
authorThibault Saunier <tsaunier@gnome.org>
Wed, 30 Jul 2014 13:23:39 +0000 (15:23 +0200)
committerThibault Saunier <tsaunier@gnome.org>
Wed, 30 Jul 2014 13:28:21 +0000 (15:28 +0200)
Otherwize the pipeline would be in an wrong state and on the next
iteration any kind of error could happen

Everytime an error happens in a pipeline the application has to set the
pipeline back to NULL instead of READY.

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

gst-libs/gst/pbutils/gstdiscoverer.c

index 337cd32..da650f3 100644 (file)
@@ -1514,12 +1514,20 @@ discoverer_cleanup (GstDiscoverer * dc)
   GST_DEBUG ("Cleaning up");
 
   gst_bus_set_flushing (dc->priv->bus, TRUE);
+
+  DISCO_LOCK (dc);
+  if (dc->priv->current_error) {
+    g_error_free (dc->priv->current_error);
+    DISCO_UNLOCK (dc);
+    gst_element_set_state ((GstElement *) dc->priv->pipeline, GST_STATE_NULL);
+  } else {
+    DISCO_UNLOCK (dc);
+  }
+
   gst_element_set_state ((GstElement *) dc->priv->pipeline, GST_STATE_READY);
   gst_bus_set_flushing (dc->priv->bus, FALSE);
 
   DISCO_LOCK (dc);
-  if (dc->priv->current_error)
-    g_error_free (dc->priv->current_error);
   dc->priv->current_error = NULL;
   if (dc->priv->current_topology) {
     gst_structure_free (dc->priv->current_topology);