mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-07 16:49:52 +00:00
adaptivedemux: release the manifest lock ...
before broadcasting preroll. The deadlock was as follows: -> The subclass pushes a buffer on a newly-created stream in T1 -> We take the preroll lock in T1, to handle_preroll -> The demuxer is stopped in T2, we take the MANIFEST_LOCK -> T1 starts blocking because it received a reconfigure event and needs to take the MANIFEST_LOCK -> T2 deadlocks because it now wants the preroll_lock. https://bugzilla.gnome.org/show_bug.cgi?id=783255
This commit is contained in:
parent
2b401de91c
commit
694da006e0
1 changed files with 2 additions and 0 deletions
|
@ -2061,9 +2061,11 @@ gst_adaptive_demux_stop_tasks (GstAdaptiveDemux * demux, gboolean stop_updates)
|
|||
g_mutex_unlock (&stream->fragment_download_lock);
|
||||
}
|
||||
|
||||
GST_MANIFEST_UNLOCK (demux);
|
||||
g_mutex_lock (&demux->priv->preroll_lock);
|
||||
g_cond_broadcast (&demux->priv->preroll_cond);
|
||||
g_mutex_unlock (&demux->priv->preroll_lock);
|
||||
GST_MANIFEST_LOCK (demux);
|
||||
|
||||
g_mutex_lock (&demux->priv->manifest_update_lock);
|
||||
g_cond_broadcast (&demux->priv->manifest_cond);
|
||||
|
|
Loading…
Reference in a new issue