From 1c79b398964daa6803e4b42d649ce4101a62df4b Mon Sep 17 00:00:00 2001 From: Jan Schmidt Date: Tue, 17 Mar 2020 19:31:22 +1100 Subject: [PATCH] adaptivedemux: Don't ignore gst_segment_do_seek() return result gst_segment_do_seek() can fail, so don't ignore the return result --- gst-libs/gst/adaptivedemux/gstadaptivedemux.c | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/gst-libs/gst/adaptivedemux/gstadaptivedemux.c b/gst-libs/gst/adaptivedemux/gstadaptivedemux.c index 0f27f74558..c9ca405290 100644 --- a/gst-libs/gst/adaptivedemux/gstadaptivedemux.c +++ b/gst-libs/gst/adaptivedemux/gstadaptivedemux.c @@ -1757,22 +1757,24 @@ gst_adaptive_demux_handle_seek_event (GstAdaptiveDemux * demux, GstPad * pad, } stream = NULL; - gst_segment_do_seek (&demux->segment, rate, format, flags, start_type, + ret = gst_segment_do_seek (&demux->segment, rate, format, flags, start_type, start, stop_type, stop, &update); - /* FIXME - this seems unatural, do_seek() is updating base when we - * only want the start/stop position to change, maybe do_seek() needs - * some fixing? */ - if (!(flags & GST_SEEK_FLAG_FLUSH) && ((rate > 0 - && start_type == GST_SEEK_TYPE_NONE) || (rate < 0 - && stop_type == GST_SEEK_TYPE_NONE))) { - demux->segment.base = oldsegment.base; + if (ret) { + /* FIXME - this seems unatural, do_seek() is updating base when we + * only want the start/stop position to change, maybe do_seek() needs + * some fixing? */ + if (!(flags & GST_SEEK_FLAG_FLUSH) && ((rate > 0 + && start_type == GST_SEEK_TYPE_NONE) || (rate < 0 + && stop_type == GST_SEEK_TYPE_NONE))) { + demux->segment.base = oldsegment.base; + } + + GST_DEBUG_OBJECT (demux, "Calling subclass seek: %" GST_PTR_FORMAT, event); + + ret = demux_class->seek (demux, event); } - GST_DEBUG_OBJECT (demux, "Calling subclass seek: %" GST_PTR_FORMAT, event); - - ret = demux_class->seek (demux, event); - if (!ret) { /* Is there anything else we can do if it fails? */ gst_segment_copy_into (&oldsegment, &demux->segment);