v4l2: Consolidate mutex classes to Mutex and MutexLocker
std::mutex and std::unique_lock are used in v4l2 directory, mixing Mutex and MutexLocker. This consolidates them to Mutex and MutexLocker. This also fixes vidioc_dqbuf argument to take Mutex instead of MutexLocker. Signed-off-by: Hirokazu Honda <hiroh@chromium.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
3536473e06
commit
7b86854e40
3 changed files with 9 additions and 7 deletions
|
@ -8,10 +8,10 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <deque>
|
#include <deque>
|
||||||
#include <mutex>
|
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
#include <libcamera/base/semaphore.h>
|
#include <libcamera/base/semaphore.h>
|
||||||
|
#include <libcamera/base/thread.h>
|
||||||
|
|
||||||
#include <libcamera/camera.h>
|
#include <libcamera/camera.h>
|
||||||
#include <libcamera/file_descriptor.h>
|
#include <libcamera/file_descriptor.h>
|
||||||
|
@ -71,7 +71,7 @@ private:
|
||||||
|
|
||||||
bool isRunning_;
|
bool isRunning_;
|
||||||
|
|
||||||
std::mutex bufferLock_;
|
libcamera::Mutex bufferLock_;
|
||||||
libcamera::FrameBufferAllocator *bufferAllocator_;
|
libcamera::FrameBufferAllocator *bufferAllocator_;
|
||||||
|
|
||||||
std::vector<std::unique_ptr<libcamera::Request>> requestPool_;
|
std::vector<std::unique_ptr<libcamera::Request>> requestPool_;
|
||||||
|
|
|
@ -575,7 +575,7 @@ int V4L2CameraProxy::vidioc_qbuf(V4L2CameraFile *file, struct v4l2_buffer *arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
int V4L2CameraProxy::vidioc_dqbuf(V4L2CameraFile *file, struct v4l2_buffer *arg,
|
int V4L2CameraProxy::vidioc_dqbuf(V4L2CameraFile *file, struct v4l2_buffer *arg,
|
||||||
MutexLocker *locker)
|
Mutex *lock)
|
||||||
{
|
{
|
||||||
LOG(V4L2Compat, Debug) << "Servicing vidioc_dqbuf fd = " << file->efd();
|
LOG(V4L2Compat, Debug) << "Servicing vidioc_dqbuf fd = " << file->efd();
|
||||||
|
|
||||||
|
@ -593,9 +593,9 @@ int V4L2CameraProxy::vidioc_dqbuf(V4L2CameraFile *file, struct v4l2_buffer *arg,
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if (!file->nonBlocking()) {
|
if (!file->nonBlocking()) {
|
||||||
locker->unlock();
|
lock->unlock();
|
||||||
vcam_->waitForBufferAvailable();
|
vcam_->waitForBufferAvailable();
|
||||||
locker->lock();
|
lock->lock();
|
||||||
} else if (!vcam_->isBufferAvailable())
|
} else if (!vcam_->isBufferAvailable())
|
||||||
return -EAGAIN;
|
return -EAGAIN;
|
||||||
|
|
||||||
|
@ -753,7 +753,7 @@ int V4L2CameraProxy::ioctl(V4L2CameraFile *file, unsigned long request, void *ar
|
||||||
ret = vidioc_qbuf(file, static_cast<struct v4l2_buffer *>(arg));
|
ret = vidioc_qbuf(file, static_cast<struct v4l2_buffer *>(arg));
|
||||||
break;
|
break;
|
||||||
case VIDIOC_DQBUF:
|
case VIDIOC_DQBUF:
|
||||||
ret = vidioc_dqbuf(file, static_cast<struct v4l2_buffer *>(arg), &locker);
|
ret = vidioc_dqbuf(file, static_cast<struct v4l2_buffer *>(arg), &proxyMutex_);
|
||||||
break;
|
break;
|
||||||
case VIDIOC_STREAMON:
|
case VIDIOC_STREAMON:
|
||||||
ret = vidioc_streamon(file, static_cast<int *>(arg));
|
ret = vidioc_streamon(file, static_cast<int *>(arg));
|
||||||
|
|
|
@ -14,6 +14,8 @@
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
#include <libcamera/base/thread.h>
|
||||||
|
|
||||||
#include <libcamera/camera.h>
|
#include <libcamera/camera.h>
|
||||||
|
|
||||||
#include "v4l2_camera.h"
|
#include "v4l2_camera.h"
|
||||||
|
@ -57,7 +59,7 @@ private:
|
||||||
int vidioc_querybuf(V4L2CameraFile *file, struct v4l2_buffer *arg);
|
int vidioc_querybuf(V4L2CameraFile *file, struct v4l2_buffer *arg);
|
||||||
int vidioc_qbuf(V4L2CameraFile *file, struct v4l2_buffer *arg);
|
int vidioc_qbuf(V4L2CameraFile *file, struct v4l2_buffer *arg);
|
||||||
int vidioc_dqbuf(V4L2CameraFile *file, struct v4l2_buffer *arg,
|
int vidioc_dqbuf(V4L2CameraFile *file, struct v4l2_buffer *arg,
|
||||||
libcamera::MutexLocker *locker);
|
libcamera::Mutex *lock);
|
||||||
int vidioc_streamon(V4L2CameraFile *file, int *arg);
|
int vidioc_streamon(V4L2CameraFile *file, int *arg);
|
||||||
int vidioc_streamoff(V4L2CameraFile *file, int *arg);
|
int vidioc_streamoff(V4L2CameraFile *file, int *arg);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue