summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHirokazu Honda <hiroh@chromium.org>2021-04-02 11:12:37 +0900
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-04-20 05:55:50 +0300
commit0b661d70ec62d69ffd4ea7bb0aeb92d7ad12b8d3 (patch)
treed62d0c83f8ef150f2d00769801ff45544fd2f1f8
parent796109c8dcb133d85a30f12864d924b20dad5f5a (diff)
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 <hiroh@chromium.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--src/android/camera_device.cpp19
-rw-r--r--src/android/camera_device.h2
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<libcamera::Size>
getYUVResolutions(libcamera::CameraConfiguration *cameraConfig,