mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-03 13:02:29 +00:00
appsink: Make sure to also handle unlock when waiting for EOS to be handled
Otherwise shutting down during EOS waiting will cause a deadlock. https://bugzilla.gnome.org/show_bug.cgi?id=795551
This commit is contained in:
parent
a19497ab67
commit
9f9000e693
1 changed files with 14 additions and 0 deletions
|
@ -731,6 +731,20 @@ gst_app_sink_event (GstBaseSink * sink, GstEvent * event)
|
|||
* consumed, which is a bit confusing for the application
|
||||
*/
|
||||
while (priv->num_buffers > 0 && !priv->flushing && priv->wait_on_eos) {
|
||||
if (priv->unlock) {
|
||||
/* we are asked to unlock, call the wait_preroll method */
|
||||
g_mutex_unlock (&priv->mutex);
|
||||
if (gst_base_sink_wait_preroll (sink) != GST_FLOW_OK) {
|
||||
/* Directly go out of here */
|
||||
gst_event_unref (event);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* we are allowed to continue now */
|
||||
g_mutex_lock (&priv->mutex);
|
||||
continue;
|
||||
}
|
||||
|
||||
priv->wait_status |= STREAM_WAITING;
|
||||
g_cond_wait (&priv->cond, &priv->mutex);
|
||||
priv->wait_status &= ~STREAM_WAITING;
|
||||
|
|
Loading…
Reference in a new issue