Message ID | 20210513092246.42847-5-jacopo@jmondi.org |
---|---|
State | Superseded |
Delegated to: | Jacopo Mondi |
Headers | show |
Series |
|
Related | show |
Hi Jacopo, thank you for the patch. On Thu, May 13, 2021 at 6:22 PM Jacopo Mondi <jacopo@jmondi.org> wrote: > The CameraDevice class maintains the camera state in the 'running_' > boolean flag to check if the camera has to be started at the first > received process_capture_request() call which happens after the camera > had been stopped. > > So far this was correct, as the operations that change the camera > could only start or stop the camera, so a simple boolean flag > was enough. > > To prepare to handle the flush() operation that will introduce a new > 'flushing' state, replace the simple plain boolean flag with an > enumeration of values that define the CameraState. > > Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> > Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> > Reviewed-by: Hirokazu Honda <hiroh@chromium.org> > --- > src/android/camera_device.cpp | 10 +++++----- > src/android/camera_device.h | 8 +++++++- > 2 files changed, 12 insertions(+), 6 deletions(-) > > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp > index 383baa60f918..82dd7ce0ee99 100644 > --- a/src/android/camera_device.cpp > +++ b/src/android/camera_device.cpp > @@ -402,7 +402,7 @@ > CameraDevice::Camera3RequestDescriptor::Camera3RequestDescriptor( > */ > > CameraDevice::CameraDevice(unsigned int id, std::shared_ptr<Camera> > camera) > - : id_(id), running_(false), camera_(std::move(camera)), > + : id_(id), state_(CameraStopped), camera_(std::move(camera)), > facing_(CAMERA_FACING_FRONT), orientation_(0) > { > camera_->requestCompleted.connect(this, > &CameraDevice::requestComplete); > @@ -758,14 +758,14 @@ void CameraDevice::close() > > void CameraDevice::stop() > { > - if (!running_) > + if (state_ == CameraStopped) > return; > > worker_.stop(); > camera_->stop(); > > descriptors_.clear(); > - running_ = false; > + state_ = CameraStopped; > } > > void CameraDevice::setCallbacks(const camera3_callback_ops_t *callbacks) > @@ -1915,7 +1915,7 @@ int > CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques > return -EINVAL; > > /* Start the camera if that's the first request we handle. */ > - if (!running_) { > + if (state_ == CameraStopped) { > worker_.start(); > > int ret = camera_->start(); > @@ -1924,7 +1924,7 @@ int > CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques > return ret; > } > > - running_ = true; > + state_ = CameraRunning; > } > > /* > diff --git a/src/android/camera_device.h b/src/android/camera_device.h > index 8d5da8bc59e1..30b364decaab 100644 > --- a/src/android/camera_device.h > +++ b/src/android/camera_device.h > @@ -88,6 +88,11 @@ private: > int androidFormat; > }; > > + enum State { > + CameraStopped, > + CameraRunning, > + }; > + > void stop(); > > int initializeStreamConfigurations(); > @@ -115,7 +120,8 @@ private: > > CameraWorker worker_; > > - bool running_; > + State state_; > + > std::shared_ptr<libcamera::Camera> camera_; > std::unique_ptr<libcamera::CameraConfiguration> config_; > > -- > 2.31.1 > > _______________________________________________ > libcamera-devel mailing list > libcamera-devel@lists.libcamera.org > https://lists.libcamera.org/listinfo/libcamera-devel >
diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp index 383baa60f918..82dd7ce0ee99 100644 --- a/src/android/camera_device.cpp +++ b/src/android/camera_device.cpp @@ -402,7 +402,7 @@ CameraDevice::Camera3RequestDescriptor::Camera3RequestDescriptor( */ CameraDevice::CameraDevice(unsigned int id, std::shared_ptr<Camera> camera) - : id_(id), running_(false), camera_(std::move(camera)), + : id_(id), state_(CameraStopped), camera_(std::move(camera)), facing_(CAMERA_FACING_FRONT), orientation_(0) { camera_->requestCompleted.connect(this, &CameraDevice::requestComplete); @@ -758,14 +758,14 @@ void CameraDevice::close() void CameraDevice::stop() { - if (!running_) + if (state_ == CameraStopped) return; worker_.stop(); camera_->stop(); descriptors_.clear(); - running_ = false; + state_ = CameraStopped; } void CameraDevice::setCallbacks(const camera3_callback_ops_t *callbacks) @@ -1915,7 +1915,7 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques return -EINVAL; /* Start the camera if that's the first request we handle. */ - if (!running_) { + if (state_ == CameraStopped) { worker_.start(); int ret = camera_->start(); @@ -1924,7 +1924,7 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques return ret; } - running_ = true; + state_ = CameraRunning; } /* diff --git a/src/android/camera_device.h b/src/android/camera_device.h index 8d5da8bc59e1..30b364decaab 100644 --- a/src/android/camera_device.h +++ b/src/android/camera_device.h @@ -88,6 +88,11 @@ private: int androidFormat; }; + enum State { + CameraStopped, + CameraRunning, + }; + void stop(); int initializeStreamConfigurations(); @@ -115,7 +120,8 @@ private: CameraWorker worker_; - bool running_; + State state_; + std::shared_ptr<libcamera::Camera> camera_; std::unique_ptr<libcamera::CameraConfiguration> config_;