diff options
Diffstat (limited to 'gst-libs/gst/uridownloader/gsturidownloader.c')
-rw-r--r-- | gst-libs/gst/uridownloader/gsturidownloader.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/gst-libs/gst/uridownloader/gsturidownloader.c b/gst-libs/gst/uridownloader/gsturidownloader.c index 99d88e88..6f2c6b03 100644 --- a/gst-libs/gst/uridownloader/gsturidownloader.c +++ b/gst-libs/gst/uridownloader/gsturidownloader.c @@ -195,6 +195,7 @@ gst_uri_downloader_bus_handler (GstBus * bus, if (GST_MESSAGE_TYPE (message) == GST_MESSAGE_ERROR) { GError *err = NULL; gchar *dbg_info = NULL; + gchar *new_error = NULL; gst_message_parse_error (message, &err, &dbg_info); GST_WARNING_OBJECT (downloader, @@ -202,6 +203,13 @@ gst_uri_downloader_bus_handler (GstBus * bus, err->message, GST_OBJECT_NAME (message->src)); GST_DEBUG ("Debugging info: %s\n", (dbg_info) ? dbg_info : "none"); + if (dbg_info) + new_error = g_strdup_printf ("%s: %s\n", err->message, dbg_info); + if (new_error) { + g_free (err->message); + err->message = new_error; + } + if (!downloader->priv->err) downloader->priv->err = err; else @@ -545,10 +553,22 @@ quit: /* set the element state to NULL */ GST_OBJECT_UNLOCK (downloader); - if (download == NULL) + if (download == NULL) { gst_element_set_state (urisrc, GST_STATE_NULL); - else + } else { + GstQuery *query; + + /* Download successfull, let's query the URI */ + query = gst_query_new_uri (); + if (gst_element_query (urisrc, query)) { + gst_query_parse_uri (query, &download->uri); + gst_query_parse_uri_redirection (query, &download->redirect_uri); + gst_query_parse_uri_redirection_permanent (query, + &download->redirect_permanent); + } + gst_query_unref (query); gst_element_set_state (urisrc, GST_STATE_READY); + } GST_OBJECT_LOCK (downloader); gst_element_set_bus (urisrc, NULL); |