Commit b30dee98 authored by Olivier Crête's avatar Olivier Crête 👻 Committed by Nicolas Dufresne

v4l2sink: Block in preroll_wait on unlock

The correct behaviour of anything stuck in the ->render() function
between ->unlock() and ->unlock_stop() is to call
gst_base_sink_wait_preroll() and only return an error if this returns an
error, otherwise, it must continue where it left off!

https://bugzilla.gnome.org/show_bug.cgi?id=774945
parent cd309f31
......@@ -603,8 +603,16 @@ gst_v4l2sink_show_frame (GstVideoSink * vsink, GstBuffer * buf)
goto activate_failed;
}
gst_buffer_ref (buf);
again:
ret = gst_v4l2_buffer_pool_process (GST_V4L2_BUFFER_POOL_CAST (obj->pool),
&buf);
if (ret == GST_FLOW_FLUSHING) {
ret = gst_base_sink_wait_preroll (GST_BASE_SINK (vsink));
if (ret == GST_FLOW_OK)
goto again;
}
gst_buffer_unref (buf);
return ret;
......
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