android: camera_device: Replace running_ with CameraState

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>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Jacopo Mondi 2021-05-06 18:10:42 +02:00
parent f461ffb69a
commit 1f38e4c73f
2 changed files with 12 additions and 6 deletions

View file

@ -404,7 +404,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_(State::Stopped), camera_(std::move(camera)),
facing_(CAMERA_FACING_FRONT), orientation_(0)
{
camera_->requestCompleted.connect(this, &CameraDevice::requestComplete);
@ -799,14 +799,14 @@ void CameraDevice::close()
void CameraDevice::stop()
{
if (!running_)
if (state_ == State::Stopped)
return;
worker_.stop();
camera_->stop();
descriptors_.clear();
running_ = false;
state_ = State::Stopped;
}
void CameraDevice::setCallbacks(const camera3_callback_ops_t *callbacks)
@ -1900,7 +1900,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_ == State::Stopped) {
worker_.start();
int ret = camera_->start();
@ -1909,7 +1909,7 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques
return ret;
}
running_ = true;
state_ = State::Running;
}
/*