summaryrefslogtreecommitdiff
path: root/src/libcamera
diff options
context:
space:
mode:
authorUmang Jain <email@uajain.com>2021-01-12 10:21:40 +0530
committerKieran Bingham <kieran.bingham@ideasonboard.com>2021-01-12 14:07:58 +0000
commit44058f1c68a9789f0e9fbdfcb64d99d6313ed121 (patch)
tree2e62397cca39e5d60851f06c31ac0433076c3a07 /src/libcamera
parentc0bad607ce16ea66aa9c4de892598793402281c6 (diff)
libcamera: pipelines: ipu3: Simplify error bail out path on start()
On the bail out path, always ensure that ImgU and CIO2 are stopped before freeing the buffers. V4L2VideoDevice class guarantees that calling stop() without having to call start() is harmless, hence use this guarantee to simplify error paths. Signed-off-by: Umang Jain <email@uajain.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Diffstat (limited to 'src/libcamera')
-rw-r--r--src/libcamera/pipeline/ipu3/ipu3.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index f1151733..73304ea7 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -617,15 +617,14 @@ int PipelineHandlerIPU3::start(Camera *camera, [[maybe_unused]] ControlList *con
goto error;
ret = imgu->start();
- if (ret) {
- imgu->stop();
- cio2->stop();
+ if (ret)
goto error;
- }
return 0;
error:
+ imgu->stop();
+ cio2->stop();
freeBuffers(camera);
LOG(IPU3, Error) << "Failed to start camera " << camera->id();