+2006-08-10 Thomas Vander Stichele <thomas at apestaart dot org>
+
+ 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
+
2006-08-08 Tim-Philipp Müller <tim at centricular dot net>
* ext/jpeg/gstsmokedec.c: (gst_smokedec_chain):
dnl initialize autoconf
dnl releases only do -Wall, cvs and prerelease does -Werror too
dnl use a three digit version number for releases, and four for cvs/pre
-AC_INIT(GStreamer Good Plug-ins, 0.10.3.1,
+AC_INIT(GStreamer Good Plug-ins, 0.10.3.2,
http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer,
gst-plugins-good)
{
gboolean res;
gdouble rate;
- GstEvent *newsegment;
GstFormat format, bformat;
GstSeekFlags flags;
GstSeekType cur_type = GST_SEEK_TYPE_NONE, stop_type;
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,
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 */