From a79f92ee9d0f4867c624ed522ca1303b030b9a27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 13 Feb 2014 10:28:13 +0100 Subject: [PATCH] souphttpsrc: Properly close the session when going back to NULL Don't wait for that until the element is disposed. --- ext/soup/gstsouphttpsrc.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/ext/soup/gstsouphttpsrc.c b/ext/soup/gstsouphttpsrc.c index bbe21c342c..05ce0d3632 100644 --- a/ext/soup/gstsouphttpsrc.c +++ b/ext/soup/gstsouphttpsrc.c @@ -128,6 +128,8 @@ static void gst_soup_http_src_set_property (GObject * object, guint prop_id, static void gst_soup_http_src_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec); +static GstStateChangeReturn gst_soup_http_src_change_state (GstElement * + element, GstStateChange transition); static GstFlowReturn gst_soup_http_src_create (GstPushSrc * psrc, GstBuffer ** outbuf); static gboolean gst_soup_http_src_start (GstBaseSrc * bsrc); @@ -303,6 +305,8 @@ gst_soup_http_src_class_init (GstSoupHTTPSrcClass * klass) "Source/Network", "Receive data as a client over the network via HTTP using SOUP", "Wouter Cloetens "); + gstelement_class->change_state = + GST_DEBUG_FUNCPTR (gst_soup_http_src_change_state); gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_soup_http_src_start); gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_soup_http_src_stop); @@ -1464,6 +1468,27 @@ gst_soup_http_src_stop (GstBaseSrc * bsrc) return TRUE; } +static GstStateChangeReturn +gst_soup_http_src_change_state (GstElement * element, GstStateChange transition) +{ + GstStateChangeReturn ret; + GstSoupHTTPSrc *src; + + src = GST_SOUP_HTTP_SRC (element); + + switch (transition) { + case GST_STATE_CHANGE_READY_TO_NULL: + gst_soup_http_src_session_close (src); + break; + default: + break; + } + + ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition); + + return ret; +} + /* Interrupt a blocking request. */ static gboolean gst_soup_http_src_unlock (GstBaseSrc * bsrc)