diff options
author | Arun Raghavan <git@arunraghavan.net> | 2015-11-03 22:01:07 +0530 |
---|---|---|
committer | Arun Raghavan <git@arunraghavan.net> | 2015-11-03 22:02:38 +0530 |
commit | 7b17615da8844080d66c82bd7cc2090681d31aac (patch) | |
tree | 64da9f87d55ec8c174b06cdac4cc9573cd428bd4 /sys/v4l2/gstv4l2.c | |
parent | 9fee2c7c9f96829a91012f98c75aa176748c1d3c (diff) |
v4l2: Set O_CLOEXEC on the device fd
This is needed to make sure that child processes don't inherit the video
device fd which can cause problems with some drivers.
Diffstat (limited to 'sys/v4l2/gstv4l2.c')
-rw-r--r-- | sys/v4l2/gstv4l2.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/v4l2/gstv4l2.c b/sys/v4l2/gstv4l2.c index 08ff3f582..8333eab41 100644 --- a/sys/v4l2/gstv4l2.c +++ b/sys/v4l2/gstv4l2.c @@ -25,6 +25,10 @@ #include "config.h" #endif +#ifndef _GNU_SOURCE +# define _GNU_SOURCE /* O_CLOEXEC */ +#endif + #include "gst/gst-i18n-plugin.h" #include <gst/gst.h> @@ -124,7 +128,8 @@ gst_v4l2_probe_and_register (GstPlugin * plugin) if (video_fd >= 0) close (video_fd); - video_fd = open (it->device_path, O_RDWR); + video_fd = open (it->device_path, O_RDWR | O_CLOEXEC); + if (video_fd == -1) { GST_DEBUG ("Failed to open %s: %s", it->device_path, g_strerror (errno)); continue; |