summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBarnabás Pőcze <barnabas.pocze@ideasonboard.com>2024-12-06 18:46:46 +0100
committerBarnabás Pőcze <barnabas.pocze@ideasonboard.com>2025-04-15 12:11:40 +0200
commit5553efc6b13fb0dbf83fc1cbc1f46f4d19b6680a (patch)
tree09ab98ec60481af01c400535bcaea8cbab76d1d1
parent7fd317adf0d29d4c37409108877e0ac68ea4b3d4 (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.cpp5
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));