Commit 9f9000e6 authored by Sebastian Dröge's avatar Sebastian Dröge

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
parent a19497ab
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment