From 0b661d70ec62d69ffd4ea7bb0aeb92d7ad12b8d3 Mon Sep 17 00:00:00 2001 From: Hirokazu Honda Date: Fri, 2 Apr 2021 11:12:37 +0900 Subject: android: CameraDevice: Add stop() This adds CameraDevice::stop(), which cleans up the member variables of CameraDevice. It is called in CameraDevice::close() and CameraDevice::configureStreams(). Signed-off-by: Hirokazu Honda Reviewed-by: Laurent Pinchart Signed-off-by: Laurent Pinchart --- src/android/camera_device.cpp | 19 ++++++++++++------- src/android/camera_device.h | 2 ++ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp index 89044efa..00eb76b5 100644 --- a/src/android/camera_device.cpp +++ b/src/android/camera_device.cpp @@ -754,9 +754,18 @@ void CameraDevice::close() { streams_.clear(); + stop(); + + camera_->release(); +} + +void CameraDevice::stop() +{ + if (!running_) + return; + worker_.stop(); camera_->stop(); - camera_->release(); running_ = false; } @@ -1642,12 +1651,8 @@ PixelFormat CameraDevice::toPixelFormat(int format) const */ int CameraDevice::configureStreams(camera3_stream_configuration_t *stream_list) { - /* Before any configuration attempt, stop the camera if it's running. */ - if (running_) { - worker_.stop(); - camera_->stop(); - running_ = false; - } + /* Before any configuration attempt, stop the camera. */ + stop(); if (stream_list->num_streams == 0) { LOG(HAL, Error) << "No streams in configuration"; diff --git a/src/android/camera_device.h b/src/android/camera_device.h index 11bdfec8..39cf95ad 100644 --- a/src/android/camera_device.h +++ b/src/android/camera_device.h @@ -85,6 +85,8 @@ private: int androidFormat; }; + void stop(); + int initializeStreamConfigurations(); std::vector getYUVResolutions(libcamera::CameraConfiguration *cameraConfig, -- cgit v1.2.1