summaryrefslogtreecommitdiffstats
path: root/gst/wavparse
diff options
context:
space:
mode:
Diffstat (limited to 'gst/wavparse')
-rw-r--r--gst/wavparse/gstwavparse.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gst/wavparse/gstwavparse.c b/gst/wavparse/gstwavparse.c
index 7cbb4d3b..b2f49807 100644
--- a/gst/wavparse/gstwavparse.c
+++ b/gst/wavparse/gstwavparse.c
@@ -168,6 +168,7 @@ gst_wavparse_reset (GstWavParse * wav)
wav->seek_event = NULL;
if (wav->adapter) {
gst_adapter_clear (wav->adapter);
+ g_object_unref (wav->adapter);
wav->adapter = NULL;
}
if (wav->tags)
@@ -2219,12 +2220,17 @@ gst_wavparse_sink_activate (GstPad * sinkpad)
if (gst_pad_check_pull_range (sinkpad)) {
GST_DEBUG ("going to pull mode");
wav->streaming = FALSE;
+ if (wav->adapter) {
+ gst_adapter_clear (wav->adapter);
+ g_object_unref (wav->adapter);
+ }
wav->adapter = NULL;
res = gst_pad_activate_pull (sinkpad, TRUE);
} else {
GST_DEBUG ("going to push (streaming) mode");
wav->streaming = TRUE;
- wav->adapter = gst_adapter_new ();
+ if (wav->adapter == NULL)
+ wav->adapter = gst_adapter_new ();
res = gst_pad_activate_push (sinkpad, TRUE);
}
gst_object_unref (wav);