qtdemux: Don't stop task when resetting
authorEdward Hervey <edward@centricular.com>
Wed, 27 Jul 2022 09:19:50 +0000 (11:19 +0200)
committerEdward Hervey <bilboed@bilboed.com>
Mon, 3 Oct 2022 12:41:18 +0000 (14:41 +0200)
This is a regression that was introduced in
cca2f555d14b5751f7f9d466b66127544dad5138 (yes, 9 years ago).

The only place where a demuxer streaming thread should be stopped is when the
sinkpad is deactivated from pull mode (i.e. PAUSED->READY).

Attempting to stop the task in this function would cause this to happen when a
FLUSH_STOP or STREAM_START event is received... which can cause deadlocks.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3109>

subprojects/gst-plugins-good/gst/isomp4/qtdemux.c

index 1c097f8..10789e6 100644 (file)
@@ -1985,7 +1985,6 @@ gst_qtdemux_reset (GstQTDemux * qtdemux, gboolean hard)
   gint i;
 
   GST_DEBUG_OBJECT (qtdemux, "Resetting demux");
-  gst_pad_stop_task (qtdemux->sinkpad);
 
   if (hard || qtdemux->upstream_format_is_time) {
     qtdemux->state = QTDEMUX_STATE_INITIAL;