From 235e46207743bb487538081c5ed2746f96955f73 Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Wed, 30 Jul 2014 15:23:39 +0200 Subject: [PATCH] pbutils: discoverer: Always set the pipeline back to NULL after an error 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 | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/gst-libs/gst/pbutils/gstdiscoverer.c b/gst-libs/gst/pbutils/gstdiscoverer.c index 337cd32004..da650f3f94 100644 --- a/gst-libs/gst/pbutils/gstdiscoverer.c +++ b/gst-libs/gst/pbutils/gstdiscoverer.c @@ -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); -- 2.34.1