libcamera: v4l2_videodevice: lastUsedCounter_ need not be atomic

The `V4L2BufferCache` type is not thread-safe. Its `lastUsedCounter_`
member is not used in contexts where its atomicity would matter.
So it does not need to be have an atomic type.

Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Barnabás Pőcze 2025-03-07 16:00:21 +01:00
parent 90208694c8
commit 1df8091e63
2 changed files with 3 additions and 4 deletions

View file

@ -8,7 +8,6 @@
#pragma once #pragma once
#include <array> #include <array>
#include <atomic>
#include <memory> #include <memory>
#include <optional> #include <optional>
#include <ostream> #include <ostream>
@ -158,7 +157,7 @@ private:
std::vector<Plane> planes_; std::vector<Plane> planes_;
}; };
std::atomic<uint64_t> lastUsedCounter_; uint64_t lastUsedCounter_;
std::vector<Entry> cache_; std::vector<Entry> cache_;
/* \todo Expose the miss counter through an instrumentation API. */ /* \todo Expose the miss counter through an instrumentation API. */
unsigned int missCounter_; unsigned int missCounter_;

View file

@ -190,7 +190,7 @@ V4L2BufferCache::V4L2BufferCache(const std::vector<std::unique_ptr<FrameBuffer>>
{ {
for (const std::unique_ptr<FrameBuffer> &buffer : buffers) for (const std::unique_ptr<FrameBuffer> &buffer : buffers)
cache_.emplace_back(true, cache_.emplace_back(true,
lastUsedCounter_.fetch_add(1, std::memory_order_acq_rel), lastUsedCounter_++,
*buffer.get()); *buffer.get());
} }
@ -258,7 +258,7 @@ int V4L2BufferCache::get(const FrameBuffer &buffer)
return -ENOENT; return -ENOENT;
cache_[use] = Entry(false, cache_[use] = Entry(false,
lastUsedCounter_.fetch_add(1, std::memory_order_acq_rel), lastUsedCounter_++,
buffer); buffer);
return use; return use;