diff options
author | Edward Hervey <edward@fluendo.com> | 2006-08-10 14:10:28 +0000 |
---|---|---|
committer | Thomas Vander Stichele <thomas@apestaart.org> | 2006-08-10 14:10:28 +0000 |
commit | 99557bbd280fe443e888dce1f5401c7bd4208bc2 (patch) | |
tree | 870629d1f8833e53d376f2d08a80620b6e6e4d33 /gst/wavparse/gstwavparse.c | |
parent | 611a62ee5137c2095eb52305f7340f043cd6e053 (diff) |
Send the newsegment event in the streaming thread.
Original commit message from CVS:
Patch by: Edward Hervey <edward@fluendo.com>
* configure.ac:
* gst/wavparse/gstwavparse.c: (gst_wavparse_perform_seek),
(gst_wavparse_stream_data):
Send the newsegment event in the streaming thread.
Fixes #347529
Diffstat (limited to 'gst/wavparse/gstwavparse.c')
-rw-r--r-- | gst/wavparse/gstwavparse.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/gst/wavparse/gstwavparse.c b/gst/wavparse/gstwavparse.c index 48d244a0..2e606dfe 100644 --- a/gst/wavparse/gstwavparse.c +++ b/gst/wavparse/gstwavparse.c @@ -776,7 +776,6 @@ gst_wavparse_perform_seek (GstWavParse * wav, GstEvent * event) { gboolean res; gdouble rate; - GstEvent *newsegment; GstFormat format, bformat; GstSeekFlags flags; GstSeekType cur_type = GST_SEEK_TYPE_NONE, stop_type; @@ -910,18 +909,13 @@ gst_wavparse_perform_seek (GstWavParse * wav, GstEvent * event) GST_DEBUG_OBJECT (wav, "Sending newsegment from %" G_GINT64_FORMAT " to %" G_GINT64_FORMAT, wav->segment.start, stop); - newsegment = + /* store the newsegment event so it can be sent from the streaming thread. */ + if (wav->newsegment) + gst_event_unref (wav->newsegment); + wav->newsegment = gst_event_new_new_segment (FALSE, wav->segment.rate, wav->segment.format, wav->segment.last_stop, stop, wav->segment.time); - if (wav->srcpad) { - gst_pad_push_event (wav->srcpad, newsegment); - } else { - /* send later when we actually create the source pad */ - g_assert (wav->newsegment == NULL); - wav->newsegment = newsegment; - } - wav->segment_running = TRUE; if (!wav->streaming) { gst_pad_start_task (wav->sinkpad, (GstTaskFunction) gst_wavparse_loop, @@ -1482,6 +1476,12 @@ iterate_adapter: gst_wavparse_add_src_pad (wav, buf); } + /* If we have a pending newsegment send it now. */ + if (G_UNLIKELY (wav->newsegment != NULL)) { + gst_pad_push_event (wav->srcpad, wav->newsegment); + wav->newsegment = NULL; + } + obtained = GST_BUFFER_SIZE (buf); /* our positions */ |