diff options
author | Barnabás Pőcze <barnabas.pocze@ideasonboard.com> | 2024-12-06 18:46:46 +0100 |
---|---|---|
committer | Barnabás Pőcze <barnabas.pocze@ideasonboard.com> | 2025-04-15 12:11:40 +0200 |
commit | 5553efc6b13fb0dbf83fc1cbc1f46f4d19b6680a (patch) | |
tree | 09ab98ec60481af01c400535bcaea8cbab76d1d1 | |
parent | 7fd317adf0d29d4c37409108877e0ac68ea4b3d4 (diff) |
libcamera: request: Avoid double map lookup
Use `try_emplace()` that more or less combines `find()` and `operator[]`
in one function.
Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r-- | src/libcamera/request.cpp | 5 |
1 files 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)); |