From 8cd6208b7d6c77bf57478968a9973d84374f2f58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 12 Feb 2014 17:59:45 +0100 Subject: [PATCH] uridownloader: Shutdown the source element before unlinking it Otherwise we might get warnings about pushing to unlinked pads. Based on a patch by Andoni Morales. --- gst-libs/gst/uridownloader/gsturidownloader.c | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/gst-libs/gst/uridownloader/gsturidownloader.c b/gst-libs/gst/uridownloader/gsturidownloader.c index 4fc36178c9..6f9f539787 100644 --- a/gst-libs/gst/uridownloader/gsturidownloader.c +++ b/gst-libs/gst/uridownloader/gsturidownloader.c @@ -452,29 +452,29 @@ quit: GstPad *pad; GstElement *urisrc; - GST_DEBUG_OBJECT (downloader, "Stopping source element %s", - GST_ELEMENT_NAME (downloader->priv->urisrc)); - - /* remove the bus' sync handler */ - gst_bus_set_sync_handler (downloader->priv->bus, NULL, NULL, NULL); - /* unlink the source element from the internal pad */ - pad = gst_pad_get_peer (downloader->priv->pad); - if (pad) { - gst_pad_unlink (pad, downloader->priv->pad); - gst_object_unref (pad); - } urisrc = downloader->priv->urisrc; - downloader->priv->urisrc = NULL; - GST_OBJECT_UNLOCK (downloader); GST_DEBUG_OBJECT (downloader, "Stopping source element %s", GST_ELEMENT_NAME (urisrc)); + /* remove the bus' sync handler */ + gst_bus_set_sync_handler (downloader->priv->bus, NULL, NULL, NULL); + /* set the element state to NULL */ gst_bus_set_flushing (downloader->priv->bus, TRUE); gst_element_set_state (urisrc, GST_STATE_NULL); gst_element_get_state (urisrc, NULL, NULL, GST_CLOCK_TIME_NONE); gst_element_set_bus (urisrc, NULL); + + /* unlink the source element from the internal pad */ + pad = gst_pad_get_peer (downloader->priv->pad); + if (pad) { + gst_pad_unlink (pad, downloader->priv->pad); + gst_object_unref (pad); + } + downloader->priv->urisrc = NULL; + GST_OBJECT_UNLOCK (downloader); + gst_object_unref (urisrc); } else { GST_OBJECT_UNLOCK (downloader);