From 9bd140d3b78b6fbf080cbbaa359b7477b6be3ea3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Mon, 22 Jul 2013 08:08:27 +0200 Subject: [PATCH] streamcombiner: Fix locking We have to hold the streams-lock when iterating over all pads, also the stream-lock of the pad is already locked when we receive EOS. Call gst_pad_event_default() for the correct default handling of events. --- gst/encoding/gststreamcombiner.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/gst/encoding/gststreamcombiner.c b/gst/encoding/gststreamcombiner.c index 518b377..e41914f 100644 --- a/gst/encoding/gststreamcombiner.c +++ b/gst/encoding/gststreamcombiner.c @@ -138,8 +138,7 @@ gst_stream_combiner_sink_event (GstPad * pad, GstObject * parent, switch (GST_EVENT_TYPE (event)) { case GST_EVENT_EOS: - GST_PAD_STREAM_LOCK (pad); - + STREAMS_LOCK (stream_combiner); combiner_pad->is_eos = TRUE; if (!_all_sink_pads_eos (stream_combiner)) { gst_event_unref (event); @@ -147,8 +146,7 @@ gst_stream_combiner_sink_event (GstPad * pad, GstObject * parent, } else { GST_DEBUG_OBJECT (stream_combiner, "All sink pads eos, pushing eos"); } - - GST_PAD_STREAM_UNLOCK (pad); + STREAMS_UNLOCK (stream_combiner); break; default: break; @@ -159,7 +157,7 @@ gst_stream_combiner_sink_event (GstPad * pad, GstObject * parent, /* FLUSH_STOP : lock, unmark as flushing, unlock, if was flushing forward */ /* OTHER : if selected pad forward */ if (event) - return gst_pad_push_event (stream_combiner->srcpad, event); + return gst_pad_event_default (pad, parent, event); return FALSE; } -- 2.7.4