summaryrefslogtreecommitdiffstats
path: root/gst/wavparse/gstwavparse.c
diff options
context:
space:
mode:
authorEdward Hervey <edward@fluendo.com>2006-08-10 14:10:28 +0000
committerThomas Vander Stichele <thomas@apestaart.org>2006-08-10 14:10:28 +0000
commit99557bbd280fe443e888dce1f5401c7bd4208bc2 (patch)
tree870629d1f8833e53d376f2d08a80620b6e6e4d33 /gst/wavparse/gstwavparse.c
parent611a62ee5137c2095eb52305f7340f043cd6e053 (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.c20
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 */