Chromium Code Reviews| Index: content/common/gpu/media/generic_v4l2_device.cc |
| diff --git a/content/common/gpu/media/generic_v4l2_device.cc b/content/common/gpu/media/generic_v4l2_device.cc |
| index 67600487cae722cb93d2d16d9dad8e976d3ed5a7..24b92ecd89b7510be02241c56a62b7a1790da27b 100644 |
| --- a/content/common/gpu/media/generic_v4l2_device.cc |
| +++ b/content/common/gpu/media/generic_v4l2_device.cc |
| @@ -29,9 +29,6 @@ using content_common_gpu_media::StubPathMap; |
| static const base::FilePath::CharType kV4l2Lib[] = |
| FILE_PATH_LITERAL("/usr/lib/libv4l2.so"); |
| -#else |
| -#define v4l2_close close |
| -#define v4l2_ioctl ioctl |
| #endif |
| namespace content { |
| @@ -45,7 +42,8 @@ const char kImageProcessorDevice[] = "/dev/gsc0"; |
| GenericV4L2Device::GenericV4L2Device(Type type) |
| : type_(type), |
| device_fd_(-1), |
| - device_poll_interrupt_fd_(-1) {} |
| + device_poll_interrupt_fd_(-1), |
| + use_libv4l2_(false) {} |
| GenericV4L2Device::~GenericV4L2Device() { |
| if (device_poll_interrupt_fd_ != -1) { |
| @@ -53,13 +51,27 @@ GenericV4L2Device::~GenericV4L2Device() { |
| device_poll_interrupt_fd_ = -1; |
| } |
| if (device_fd_ != -1) { |
| - v4l2_close(device_fd_); |
| + Close(); |
| device_fd_ = -1; |
| } |
| } |
| +void GenericV4L2Device::Close() { |
| +#if defined(USE_LIBV4L2) |
| + if (use_libv4l2_) { |
| + v4l2_close(device_fd_); |
| + return; |
| + } |
| +#endif |
| + close(device_fd_); |
|
Pawel Osciak
2015/04/21 05:02:42
Perhaps this would be a good time to start using b
wuchengli
2015/04/21 06:12:10
Good idea. Done.
|
| +} |
| + |
| int GenericV4L2Device::Ioctl(int request, void* arg) { |
| - return HANDLE_EINTR(v4l2_ioctl(device_fd_, request, arg)); |
| +#if defined(USE_LIBV4L2) |
| + if (use_libv4l2_) |
| + return HANDLE_EINTR(v4l2_ioctl(device_fd_, request, arg)); |
| +#endif |
| + return HANDLE_EINTR(ioctl(device_fd_, request, arg)); |
| } |
| bool GenericV4L2Device::Poll(bool poll_device, bool* event_pending) { |
| @@ -153,9 +165,9 @@ bool GenericV4L2Device::Initialize() { |
| return false; |
| } |
| #if defined(USE_LIBV4L2) |
| - if (HANDLE_EINTR(v4l2_fd_open(device_fd_, V4L2_DISABLE_CONVERSION)) == -1) { |
| - v4l2_close(device_fd_); |
| - return false; |
| + if (HANDLE_EINTR(v4l2_fd_open(device_fd_, V4L2_DISABLE_CONVERSION)) >= 0) { |
|
Pawel Osciak
2015/04/21 05:02:42
I'd prefer != -1.
wuchengli
2015/04/21 06:12:10
Done. I was confused when I discussed with you. !=
|
| + DVLOG(2) << "Found a libv4l2 plugin for " << device_path; |
|
Pawel Osciak
2015/04/21 05:02:42
v4l2_fd_open succeeding is not exactly equivalent
wuchengli
2015/04/21 06:12:10
Done.
|
| + use_libv4l2_ = true; |
| } |
| #endif |