[libcamera-devel] [PATCH] libamera: pipeline: rkisp1: timeline: Fix compilation with gcc-[56]

Niklas Söderlund niklas.soderlund at ragnatech.se
Fri Oct 11 17:46:33 CEST 2019


Hi Laurent,

Thanks for spotting this.

On 2019-10-11 17:30:27 +0300, Laurent Pinchart wrote:
> With gcc 5 and 6, insertion in a std::multimap copies the pair passed as
> an argument to the insert() method. As the mapped type is a non-copyable
> std::unique_ptr<>, this fails to compile.
> 
> Compilation with newer gcc versions succeed due to support for C++-17
> and the fix described in https://cplusplus.github.io/LWG/issue2354. To
> support gcc 5 and 6, fix the issue by using std::multimap::emplace().
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

Reviewed-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>

> ---
>  src/libcamera/pipeline/rkisp1/timeline.cpp | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/libcamera/pipeline/rkisp1/timeline.cpp b/src/libcamera/pipeline/rkisp1/timeline.cpp
> index b98a16689fa9..f6c6434d7b53 100644
> --- a/src/libcamera/pipeline/rkisp1/timeline.cpp
> +++ b/src/libcamera/pipeline/rkisp1/timeline.cpp
> @@ -123,7 +123,7 @@ void Timeline::scheduleAction(std::unique_ptr<FrameAction> action)
>  			<< ", run now " << utils::time_point_to_string(now);
>  		action->run();
>  	} else {
> -		actions_.insert({ deadline, std::move(action) });
> +		actions_.emplace(deadline, std::move(action));
>  		updateDeadline();
>  	}
>  }
> -- 
> Regards,
> 
> Laurent Pinchart
> 

-- 
Regards,
Niklas Söderlund


More information about the libcamera-devel mailing list