mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 20:21:24 +00:00
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
This commit is contained in:
parent
cd309f31a0
commit
b30dee98e6
1 changed files with 8 additions and 0 deletions
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in a new issue