[libcamera-devel] [PATCH 09/10] cam: Store camera as shared pointer everywhere

Jacopo Mondi jacopo at jmondi.org
Wed Nov 6 09:13:40 CET 2019


Hi Niklas,
   thanks for the patch

On Mon, Oct 28, 2019 at 03:22:23AM +0100, Niklas Söderlund wrote:
> Do not store the camera raw pointer in the capture class, this will
> prevent forwarding the shared pointer in the future.
>
> Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> ---
>  src/cam/capture.cpp | 2 +-
>  src/cam/capture.h   | 4 ++--
>  src/cam/main.cpp    | 2 +-
>  3 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/src/cam/capture.cpp b/src/cam/capture.cpp
> index 27332df1d55a5c2d..e665d819fb777a90 100644
> --- a/src/cam/capture.cpp
> +++ b/src/cam/capture.cpp
> @@ -16,7 +16,7 @@
>
>  using namespace libcamera;
>
> -Capture::Capture(Camera *camera, CameraConfiguration *config)
> +Capture::Capture(std::shared_ptr<Camera> camera, CameraConfiguration *config)
>  	: camera_(camera), config_(config), writer_(nullptr)
>  {
>  }
> diff --git a/src/cam/capture.h b/src/cam/capture.h
> index 4d396afb8c771a74..c692d48918f2de1d 100644
> --- a/src/cam/capture.h
> +++ b/src/cam/capture.h
> @@ -21,7 +21,7 @@
>  class Capture
>  {
>  public:
> -	Capture(libcamera::Camera *camera,
> +	Capture(std::shared_ptr<libcamera::Camera> camera,
>  		libcamera::CameraConfiguration *config);
>
>  	int run(EventLoop *loop, const OptionsParser::Options &options);
> @@ -30,7 +30,7 @@ private:
>
>  	void requestComplete(libcamera::Request *request);
>
> -	libcamera::Camera *camera_;
> +	std::shared_ptr<libcamera::Camera> camera_;
>  	libcamera::CameraConfiguration *config_;
>
>  	std::map<libcamera::Stream *, std::string> streamName_;
> diff --git a/src/cam/main.cpp b/src/cam/main.cpp
> index 9d99f5587cbb77d0..a38cca959aca05ff 100644
> --- a/src/cam/main.cpp
> +++ b/src/cam/main.cpp
> @@ -319,7 +319,7 @@ int CamApp::run()
>  	}
>
>  	if (options_.isSet(OptCapture)) {
> -		Capture capture(camera_.get(), config_.get());
> +		Capture capture(camera_, config_.get());
>  		return capture.run(loop_, options_);

I'm not sure increasing the reference count of the shared pointer to
store it in an object whose lifetime is limited to this two lines is
worth. It doesn't hurt for sure, so I'm fine if you want to keep it.

>  	}
>
> --
> 2.23.0
>
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.libcamera.org/pipermail/libcamera-devel/attachments/20191106/6017db54/attachment.sig>


More information about the libcamera-devel mailing list