From 2125124755d58ca973c4f57dd14ac9be44be2de0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com> Date: Thu, 31 Mar 2016 12:20:30 +0300 Subject: [PATCH] adaptivedemux: Handle find_stream_for_pad() without g_assert_not_reached() if no pad is found Happens e.g. if a RECONFIGURE event is sent from downstream while we're switching pads at this very moment. The old pad is gone and the stream has a new pad. https://bugzilla.gnome.org/show_bug.cgi?id=764404 --- gst-libs/gst/adaptivedemux/gstadaptivedemux.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gst-libs/gst/adaptivedemux/gstadaptivedemux.c b/gst-libs/gst/adaptivedemux/gstadaptivedemux.c index dfe7ba701f5..ba29214768c 100644 --- a/gst-libs/gst/adaptivedemux/gstadaptivedemux.c +++ b/gst-libs/gst/adaptivedemux/gstadaptivedemux.c @@ -1092,7 +1092,6 @@ gst_adaptive_demux_find_stream_for_pad (GstAdaptiveDemux * demux, GstPad * pad) return stream; } } - g_assert_not_reached (); return NULL; } @@ -1241,6 +1240,7 @@ gst_adaptive_demux_src_event (GstPad * pad, GstObject * parent, gboolean update; gboolean ret = TRUE; GstSegment oldsegment; + GstAdaptiveDemuxStream *stream = NULL; GST_INFO_OBJECT (demux, "Received seek event"); @@ -1318,9 +1318,8 @@ gst_adaptive_demux_src_event (GstPad * pad, GstObject * parent, * use the one that received the event as the 'leading' * one to do the snap seek. */ - if (IS_SNAP_SEEK (flags) && demux_class->stream_seek) { - GstAdaptiveDemuxStream *stream = - gst_adaptive_demux_find_stream_for_pad (demux, pad); + if (IS_SNAP_SEEK (flags) && demux_class->stream_seek && (stream = + gst_adaptive_demux_find_stream_for_pad (demux, pad))) { GstClockTime ts; GstSeekFlags stream_seek_flags = flags; @@ -1359,6 +1358,7 @@ gst_adaptive_demux_src_event (GstPad * pad, GstObject * parent, GST_DEBUG_OBJECT (demux, "Adapted snap seek to %" GST_PTR_FORMAT, event); } + stream = NULL; gst_segment_do_seek (&demux->segment, rate, format, flags, start_type, start, stop_type, stop, &update);