From 5553efc6b13fb0dbf83fc1cbc1f46f4d19b6680a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Barnab=C3=A1s=20P=C5=91cze?= Date: Fri, 6 Dec 2024 18:46:46 +0100 Subject: libcamera: request: Avoid double map lookup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use `try_emplace()` that more or less combines `find()` and `operator[]` in one function. Signed-off-by: Barnabás Pőcze Reviewed-by: Kieran Bingham Reviewed-by: Laurent Pinchart --- 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 b206ac13..7f1e11e8 100644 --- a/src/libcamera/request.cpp +++ b/src/libcamera/request.cpp @@ -484,15 +484,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)); -- cgit v1.2.1