v4l2: bufferpool: update buffer state after group release
This fixes the state that lead to a flood of "newly allocated buffer %u is not free" warnings. Fixes #1185 #3184 #4037 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8454>
This commit is contained in:
parent
c79b256795
commit
d8a85e3793
@ -778,6 +778,17 @@ gst_v4l2_buffer_pool_streamoff (GstV4l2BufferPool * pool)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gst_v4l2_buffer_pool_group_released (GstV4l2BufferPool * pool,
|
||||
GstV4l2MemoryGroup * group)
|
||||
{
|
||||
gint index = group->buffer.index;
|
||||
|
||||
g_atomic_int_set (&pool->buffer_state[index], BUFFER_STATE_FREE);
|
||||
|
||||
gst_v4l2_buffer_pool_resurrect_buffer (pool);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gst_v4l2_buffer_pool_start (GstBufferPool * bpool)
|
||||
{
|
||||
@ -941,7 +952,7 @@ gst_v4l2_buffer_pool_start (GstBufferPool * bpool)
|
||||
|
||||
pool->group_released_handler =
|
||||
g_signal_connect_swapped (pool->vallocator, "group-released",
|
||||
G_CALLBACK (gst_v4l2_buffer_pool_resurrect_buffer), pool);
|
||||
G_CALLBACK (gst_v4l2_buffer_pool_group_released), pool);
|
||||
ret = gst_v4l2_buffer_pool_streamon (pool);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user