[PATCH v1] apps: cam: Fix C++20 deprecation warning

Laurent Pinchart laurent.pinchart at ideasonboard.com
Fri May 3 14:02:03 CEST 2024


Hi Umang,

On Fri, May 03, 2024 at 04:24:47PM +0530, Umang Jain wrote:
> Hi Barnabás
> 
> On 01/05/24 12:56 am, Barnabás Pőcze wrote:
> > C++20 deprecated implicit capture of `this` via `[=]`.
> > Fix that by explicitly capturing the necessary variables.
> >
> > Signed-off-by: Barnabás Pőcze <pobrn at protonmail.com>
> 
> Thank you for the patch.
> 
> Reviewed-by: Umang Jain <umang.jain at ideasonboard.com>
> 
> There is one more instance of "[=]" which I think is also a similar 
> candidate...
> 
>                  auto encoder = std::find_if(encoders.begin(), 
> encoders.end(),
>                                              [=](const Encoder &e) {
>                                                      return e.id() == 
> encoderId;
>                                              });
> 
> in src/apps/cam/drm.cpp

That lambda function doesn't capture 'this'. 'e' is a parameter to the
function, and 'encoderId' is a local variable.

> It can be a patch squashed in this one, or a patch on top (I prefer the 
> former though).
> 
> > ---
> >   src/apps/cam/camera_session.cpp | 2 +-
> >   1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/src/apps/cam/camera_session.cpp b/src/apps/cam/camera_session.cpp
> > index 334d2ed8..d1f65a99 100644
> > --- a/src/apps/cam/camera_session.cpp
> > +++ b/src/apps/cam/camera_session.cpp
> > @@ -382,7 +382,7 @@ void CameraSession::requestComplete(Request *request)
> >   	 * Defer processing of the completed request to the event loop, to avoid
> >   	 * blocking the camera manager thread.
> >   	 */
> > -	EventLoop::instance()->callLater([=]() { processRequest(request); });
> > +	EventLoop::instance()->callLater([this, request]() { processRequest(request); });
> >   }
> >   
> >   void CameraSession::processRequest(Request *request)

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list