Commit 9b9f9d0a authored by Havoc Pennington's avatar Havoc Pennington Committed by Sebastian Dröge

v4l2src: in negotiate, check for error return from set_caps

Fixes #621723  (partially)

set_caps can fail if the video device is running, in that case
setting its format leads to EBUSY.

If set_caps fails then we will not have set up the buffer pool
(it will be NULL) which leads to a crash when we try to pull
buffers. If we fail the negotiate on set_caps failure, then we
won't go to playing state and won't crash.

This is a small improvement. Of course, a nicer fix would
be to make set_caps work in the case where the format is
unchanged. If the format has changed, failing is
probably correct because we need to close the device
(go to NULL state) in order to set caps.
parent a69e419c
......@@ -516,8 +516,8 @@ gst_v4l2src_negotiate (GstBaseSrc * basesrc)
result = TRUE;
} else if (gst_caps_is_fixed (caps)) {
/* yay, fixed caps, use those then */
gst_pad_set_caps (GST_BASE_SRC_PAD (basesrc), caps);
result = TRUE;
if (gst_pad_set_caps (GST_BASE_SRC_PAD (basesrc), caps))
result = TRUE;
}
}
gst_caps_unref (caps);
......
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