[libcamera-devel] [PATCH 13/14] libcamera: pipeline: rkisp1: Factorize errors handling path on start()
Xavier Roumegue
xavier.roumegue at oss.nxp.com
Thu Sep 8 20:48:49 CEST 2022
Signed-off-by: Xavier Roumegue <xavier.roumegue at oss.nxp.com>
---
src/libcamera/pipeline/rkisp1/rkisp1.cpp | 45 +++++++++++-------------
1 file changed, 21 insertions(+), 24 deletions(-)
diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
index 25fbf9f1..c1522ca6 100644
--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
@@ -828,59 +828,56 @@ int PipelineHandlerRkISP1::start(Camera *camera, [[maybe_unused]] const ControlL
ret = data->ipa_->start();
if (ret) {
- freeBuffers(camera);
LOG(RkISP1, Error)
<< "Failed to start IPA " << camera->id();
- return ret;
+ goto ipa_err;
}
data->frame_ = 0;
ret = param_->streamOn();
if (ret) {
- data->ipa_->stop();
- freeBuffers(camera);
LOG(RkISP1, Error)
<< "Failed to start parameters " << camera->id();
- return ret;
+ goto param_err;
}
ret = stat_->streamOn();
if (ret) {
- param_->streamOff();
- data->ipa_->stop();
- freeBuffers(camera);
LOG(RkISP1, Error)
<< "Failed to start statistics " << camera->id();
- return ret;
+ goto stat_err;
}
if (data->mainPath_->isEnabled()) {
ret = mainPath_.start();
- if (ret) {
- param_->streamOff();
- stat_->streamOff();
- data->ipa_->stop();
- freeBuffers(camera);
- return ret;
- }
+ if (ret)
+ goto main_err;
}
if (hasSelfPath_ && data->selfPath_->isEnabled()) {
ret = selfPath_.start();
- if (ret) {
- mainPath_.stop();
- param_->streamOff();
- stat_->streamOff();
- data->ipa_->stop();
- freeBuffers(camera);
- return ret;
- }
+ if (ret)
+ goto self_err;
}
isp_->setFrameStartEnabled(true);
activeCamera_ = camera;
+ goto no_err;
+
+self_err:
+ if (data->mainPath_->isEnabled())
+ mainPath_.stop();
+main_err:
+ stat_->streamOff();
+stat_err:
+ param_->streamOff();
+param_err:
+ data->ipa_->stop();
+ipa_err:
+ freeBuffers(camera);
+no_err:
return ret;
}
--
2.37.3
More information about the libcamera-devel
mailing list