[PATCH v2 2/3] libcamera: request: Avoid double map lookup
Kieran Bingham
kieran.bingham at ideasonboard.com
Mon Mar 31 20:00:08 CEST 2025
Quoting Barnabás Pőcze (2025-03-31 15:17:13)
> Use `try_emplace()` that more or less combines `find()` and `operator[]`
> in one function.
>
Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> Signed-off-by: Barnabás Pőcze <barnabas.pocze at ideasonboard.com>
> ---
> src/libcamera/request.cpp | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp
> index e7eb1c0c8..fc364441a 100644
> --- a/src/libcamera/request.cpp
> +++ b/src/libcamera/request.cpp
> @@ -475,15 +475,14 @@ int Request::addBuffer(const Stream *stream, FrameBuffer *buffer,
> return -EEXIST;
> }
>
> - auto it = bufferMap_.find(stream);
> - if (it != bufferMap_.end()) {
> + auto [it, inserted] = bufferMap_.try_emplace(stream, buffer);
> + if (!inserted) {
> LOG(Request, Error) << "FrameBuffer already set for stream";
> return -EEXIST;
> }
>
> buffer->_d()->setRequest(this);
> _d()->pending_.insert(buffer);
> - bufferMap_[stream] = buffer;
>
> if (fence && fence->isValid())
> buffer->_d()->setFence(std::move(fence));
> --
> 2.49.0
>
More information about the libcamera-devel
mailing list