mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-26 18:20:44 +00:00
v4l2src: Fix crash in renegotiation
This regression was introduce by fix for making buffer pool thread safe. When
we renegotiate, the pool will be setup after we set the format. But the code
has been simplified to only get the pool once before, which caused a null
pointer deref.
Fixes 94ba019
("v4l2: Fix SIGSEGV on 'change state' during 'format change'")
Related to !3481
Fixes #1626
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3513>
This commit is contained in:
parent
684e9b2499
commit
c4cd94f465
1 changed files with 6 additions and 1 deletions
|
@ -907,11 +907,16 @@ gst_v4l2src_decide_allocation (GstBaseSrc * bsrc, GstQuery * query)
|
|||
GstCaps *caps = gst_pad_get_current_caps (GST_BASE_SRC_PAD (bsrc));
|
||||
GstV4l2Error error = GST_V4L2_ERROR_INIT;
|
||||
|
||||
/* Setting the format replaces the current pool */
|
||||
gst_clear_object (&bpool);
|
||||
|
||||
caps = gst_caps_make_writable (caps);
|
||||
|
||||
ret = gst_v4l2src_set_format (src, caps, &error);
|
||||
if (ret) {
|
||||
GstV4l2BufferPool *pool = GST_V4L2_BUFFER_POOL (bpool);
|
||||
GstV4l2BufferPool *pool;
|
||||
bpool = gst_v4l2_object_get_buffer_pool (src->v4l2object);
|
||||
pool = GST_V4L2_BUFFER_POOL (bpool);
|
||||
gst_v4l2_buffer_pool_enable_resolution_change (pool);
|
||||
} else {
|
||||
gst_v4l2_error (src, &error);
|
||||
|
|
Loading…
Reference in a new issue