summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2011-01-11 12:05:13 +0100
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2011-01-28 12:16:58 +0100
commitf3da619dd2d42177afdf64580b0e182127fa1eee (patch)
tree29d571c3d93507ffb01ec5c935a37be5f3a84c58
parent18b347296c6b3534a767dc0b282f6449e075cf55 (diff)
baseparse: arrange for consistent event handling
-rw-r--r--gst/audioparsers/gstbaseparse.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/gst/audioparsers/gstbaseparse.c b/gst/audioparsers/gstbaseparse.c
index ac9d7f2e1..887bb8bb9 100644
--- a/gst/audioparsers/gstbaseparse.c
+++ b/gst/audioparsers/gstbaseparse.c
@@ -985,8 +985,6 @@ gst_base_parse_src_event (GstPad * pad, GstEvent * event)
if (!handled)
ret = gst_pad_event_default (pad, event);
- else
- gst_event_unref (event);
gst_object_unref (parse);
return ret;
@@ -3273,11 +3271,12 @@ gst_base_parse_handle_seek (GstBaseParse * parse, GstEvent * event)
* it fails upstream */
if (format != GST_FORMAT_TIME) {
/* default action delegates to upstream */
- return FALSE;
+ res = FALSE;
+ goto done;
} else {
gst_event_ref (event);
- if (gst_pad_push_event (parse->sinkpad, event)) {
- return TRUE;
+ if ((res = gst_pad_push_event (parse->sinkpad, event))) {
+ goto done;
}
}
@@ -3439,6 +3438,9 @@ gst_base_parse_handle_seek (GstBaseParse * parse, GstEvent * event)
(GstTaskFunction) gst_base_parse_loop, parse->sinkpad);
GST_PAD_STREAM_UNLOCK (parse->sinkpad);
+
+ /* handled seek */
+ res = TRUE;
} else {
GstEvent *new_event;
GstBaseParseSeek *seek;
@@ -3479,6 +3481,9 @@ gst_base_parse_handle_seek (GstBaseParse * parse, GstEvent * event)
}
done:
+ /* handled event is ours to free */
+ if (res)
+ gst_event_unref (event);
return res;
/* ERRORS */