[libcamera-devel] [PATCH v5 4/5] ipa: raspberrypi: Add Merge method to RPiController::Metadata

Laurent Pinchart laurent.pinchart at ideasonboard.com
Tue Apr 27 09:18:18 CEST 2021


Hi Naush,

Thank you for the patch.

On Mon, Apr 19, 2021 at 02:34:50PM +0100, Naushir Patuck wrote:
> Add a new Merge method to the Metadata class. This will move all
> key/value pairs between a source and destination metadata object. Once
> complete, the source Metadata object will be empty.
> 
> Signed-off-by: Naushir Patuck <naush at raspberrypi.com>
> ---
>  src/ipa/raspberrypi/controller/metadata.hpp | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/src/ipa/raspberrypi/controller/metadata.hpp b/src/ipa/raspberrypi/controller/metadata.hpp
> index 319f2320fc70..1d3e941b3e52 100644
> --- a/src/ipa/raspberrypi/controller/metadata.hpp
> +++ b/src/ipa/raspberrypi/controller/metadata.hpp
> @@ -75,6 +75,18 @@ public:
>  		return *this;
>  	}
>  
> +	void Merge(Metadata &other)
> +	{
> +		std::lock_guard<std::mutex> lock(mutex_);
> +		std::lock_guard<std::mutex> other_lock(other.mutex_);
> +
> +		for (auto const &kv: other.data_)
> +			data_[kv.first] = std::move(kv.second);

Can't you use

		data_.merge(other.data_);

N

> +
> +		/* Render the other object as empty now! */
> +		other.data_.clear();
> +	}
> +
>  	template<typename T>
>  	T *GetLocked(std::string const &tag)
>  	{

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list