From 6e56b1be99dab02ab81f7a5e55dfe52dae3966ee Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Tue, 6 Apr 2004 23:46:37 +0000 Subject: [PATCH] gst/elements/gstbufferstore.c: when the buffer is complete, don't check if other buffers are needed Original commit message from CVS: * gst/elements/gstbufferstore.c: (gst_buffer_store_get_buffer): when the buffer is complete, don't check if other buffers are needed * gst/elements/gstfilesrc.c: (gst_filesrc_srcpad_event): check that the offset is >0 so we don't try to read before the beginning of the file * gst/gstpad.c: (gst_pad_set_pad_template): sink the template, so we don't end up with 130k pad templates --- ChangeLog | 10 ++++++++++ gst/elements/gstbufferstore.c | 1 + gst/elements/gstfilesrc.c | 5 +++-- gst/gstpad.c | 4 +++- plugins/elements/gstbufferstore.c | 1 + plugins/elements/gstfilesrc.c | 5 +++-- 6 files changed, 21 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0347334b7d..9117a887d7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2004-04-07 Benjamin Otte + + * gst/elements/gstbufferstore.c: (gst_buffer_store_get_buffer): + when the buffer is complete, don't check if other buffers are needed + * gst/elements/gstfilesrc.c: (gst_filesrc_srcpad_event): + check that the offset is >0 so we don't try to read before the + beginning of the file + * gst/gstpad.c: (gst_pad_set_pad_template): + sink the template, so we don't end up with 130k pad templates + 2004-04-06 Benjamin Otte * gst/autoplug/gstspider.c: (gst_spider_link_add): diff --git a/gst/elements/gstbufferstore.c b/gst/elements/gstbufferstore.c index cb5d982bef..c73a6b553a 100644 --- a/gst/elements/gstbufferstore.c +++ b/gst/elements/gstbufferstore.c @@ -395,6 +395,7 @@ gst_buffer_store_get_buffer (GstBufferStore * store, guint64 offset, guint size) data += tmp; size -= tmp; } + goto out; } if (!have_offset) { cur_offset += GST_BUFFER_SIZE (current); diff --git a/gst/elements/gstfilesrc.c b/gst/elements/gstfilesrc.c index a99553f4aa..69eaf387f3 100644 --- a/gst/elements/gstfilesrc.c +++ b/gst/elements/gstfilesrc.c @@ -860,8 +860,9 @@ gst_filesrc_srcpad_event (GstPad * pad, GstEvent * event) switch (GST_EVENT_SEEK_METHOD (event)) { case GST_SEEK_METHOD_SET: - if (offset > src->filelen && (!gst_filesrc_check_filesize (src) - || offset > src->filelen)) { + if (offset < 0 || + (offset > src->filelen && (!gst_filesrc_check_filesize (src) + || offset > src->filelen))) { goto error; } src->curoffset = offset; diff --git a/gst/gstpad.c b/gst/gstpad.c index 2bb01c8461..f1a4285f66 100644 --- a/gst/gstpad.c +++ b/gst/gstpad.c @@ -1838,9 +1838,11 @@ gst_pad_set_pad_template (GstPad * pad, GstPadTemplate * templ) gst_object_replace ((GstObject **) & pad->padtemplate, (GstObject *) templ); - if (templ) + if (templ) { + gst_object_sink (GST_OBJECT (templ)); g_signal_emit (G_OBJECT (templ), gst_pad_template_signals[TEMPL_PAD_CREATED], 0, pad); + } } /** diff --git a/plugins/elements/gstbufferstore.c b/plugins/elements/gstbufferstore.c index cb5d982bef..c73a6b553a 100644 --- a/plugins/elements/gstbufferstore.c +++ b/plugins/elements/gstbufferstore.c @@ -395,6 +395,7 @@ gst_buffer_store_get_buffer (GstBufferStore * store, guint64 offset, guint size) data += tmp; size -= tmp; } + goto out; } if (!have_offset) { cur_offset += GST_BUFFER_SIZE (current); diff --git a/plugins/elements/gstfilesrc.c b/plugins/elements/gstfilesrc.c index a99553f4aa..69eaf387f3 100644 --- a/plugins/elements/gstfilesrc.c +++ b/plugins/elements/gstfilesrc.c @@ -860,8 +860,9 @@ gst_filesrc_srcpad_event (GstPad * pad, GstEvent * event) switch (GST_EVENT_SEEK_METHOD (event)) { case GST_SEEK_METHOD_SET: - if (offset > src->filelen && (!gst_filesrc_check_filesize (src) - || offset > src->filelen)) { + if (offset < 0 || + (offset > src->filelen && (!gst_filesrc_check_filesize (src) + || offset > src->filelen))) { goto error; } src->curoffset = offset;