summaryrefslogtreecommitdiffstats
path: root/ext/kate/gstkateparse.c
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim.muller@collabora.co.uk>2009-07-19 23:16:07 +0100
committerTim-Philipp Müller <tim.muller@collabora.co.uk>2009-07-19 23:16:07 +0100
commit3f347c7edd0796fb033bb58f15017f1f6c6c5ebe (patch)
tree7026ebf8097499c8b6a9ecf4a36f38be6c206750 /ext/kate/gstkateparse.c
parent71efbb1e73a557d50093ccaf2ecc47009b7edd95 (diff)
downloadgst-plugins-bad-3f347c7edd0796fb033bb58f15017f1f6c6c5ebe.tar.gz
gst-plugins-bad-3f347c7edd0796fb033bb58f15017f1f6c6c5ebe.tar.bz2
gst-plugins-bad-3f347c7edd0796fb033bb58f15017f1f6c6c5ebe.zip
kate: make sure to free some more stuff
Diffstat (limited to 'ext/kate/gstkateparse.c')
-rw-r--r--ext/kate/gstkateparse.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/ext/kate/gstkateparse.c b/ext/kate/gstkateparse.c
index 5cf8ec48..eb0d2b08 100644
--- a/ext/kate/gstkateparse.c
+++ b/ext/kate/gstkateparse.c
@@ -193,6 +193,7 @@ gst_kate_parse_push_headers (GstKateParse * parse)
if (G_UNLIKELY (ret < 0)) {
GST_WARNING_OBJECT (parse, "kate_decode_headerin returned %d", ret);
}
+ /* takes ownership of outbuf, which was previously in parse->streamheader */
outbuf_list = g_list_append (outbuf_list, outbuf);
headers = headers->next;
}
@@ -210,6 +211,8 @@ gst_kate_parse_push_headers (GstKateParse * parse)
}
g_list_free (outbuf_list);
+ g_list_free (parse->streamheader);
+ parse->streamheader = NULL;
parse->streamheader_sent = TRUE;
@@ -575,6 +578,16 @@ error:
#endif
}
+static void
+gst_kate_parse_free_stream_headers (GstKateParse * parse)
+{
+ while (parse->streamheader != NULL) {
+ gst_buffer_unref (GST_BUFFER (parse->streamheader->data));
+ parse->streamheader = g_list_delete_link (parse->streamheader,
+ parse->streamheader);
+ }
+}
+
static GstStateChangeReturn
gst_kate_parse_change_state (GstElement * element, GstStateChange transition)
{
@@ -607,6 +620,7 @@ gst_kate_parse_change_state (GstElement * element, GstStateChange transition)
parse->buffer_queue = NULL;
g_queue_free (parse->event_queue);
parse->event_queue = NULL;
+ gst_kate_parse_free_stream_headers (parse);
break;
default: