From: Thibault Saunier Date: Wed, 30 Jul 2014 13:23:39 +0000 (+0200) Subject: pbutils: discoverer: Always set the pipeline back to NULL after an error X-Git-Tag: 1.6.0~1082 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=235e46207743bb487538081c5ed2746f96955f73;p=platform%2Fupstream%2Fgst-plugins-base.git 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 --- diff --git a/gst-libs/gst/pbutils/gstdiscoverer.c b/gst-libs/gst/pbutils/gstdiscoverer.c index 337cd32..da650f3 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);