Message ID | 20220905073956.7342-2-naush@raspberrypi.com |
---|---|
State | Superseded |
Headers | show |
Series |
|
Related | show |
Hi Naush Thanks for the patch! On Mon, 5 Sept 2022 at 08:40, Naushir Patuck via libcamera-devel <libcamera-devel@lists.libcamera.org> wrote: > > Convert ControlRingBuffer to a templated class to allow arbitrary ring buffer > array types to be defined. > > Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: David Plowman <david.plowman@raspberrypi.com> Tested-by: David Plowman <david.plowman@raspberrypi.com> Only tested on the Raspberry Pi, of course! Thanks David > --- > include/libcamera/internal/delayed_controls.h | 13 +++++++------ > 1 file changed, 7 insertions(+), 6 deletions(-) > > diff --git a/include/libcamera/internal/delayed_controls.h b/include/libcamera/internal/delayed_controls.h > index aef37077103c..f6e622f1dfba 100644 > --- a/include/libcamera/internal/delayed_controls.h > +++ b/include/libcamera/internal/delayed_controls.h > @@ -53,17 +53,18 @@ private: > > /* \todo Make the listSize configurable at instance creation time. */ > static constexpr int listSize = 16; > - class ControlRingBuffer : public std::array<Info, listSize> > + template<typename T> > + class ControlRingBuffer : public std::array<T, listSize> > { > public: > - Info &operator[](unsigned int index) > + T &operator[](unsigned int index) > { > - return std::array<Info, listSize>::operator[](index % listSize); > + return std::array<T, listSize>::operator[](index % listSize); > } > > - const Info &operator[](unsigned int index) const > + const T &operator[](unsigned int index) const > { > - return std::array<Info, listSize>::operator[](index % listSize); > + return std::array<T, listSize>::operator[](index % listSize); > } > }; > > @@ -75,7 +76,7 @@ private: > uint32_t queueCount_; > uint32_t writeCount_; > /* \todo Evaluate if we should index on ControlId * or unsigned int */ > - std::unordered_map<const ControlId *, ControlRingBuffer> values_; > + std::unordered_map<const ControlId *, ControlRingBuffer<Info>> values_; > }; > > } /* namespace libcamera */ > -- > 2.25.1 >
diff --git a/include/libcamera/internal/delayed_controls.h b/include/libcamera/internal/delayed_controls.h index aef37077103c..f6e622f1dfba 100644 --- a/include/libcamera/internal/delayed_controls.h +++ b/include/libcamera/internal/delayed_controls.h @@ -53,17 +53,18 @@ private: /* \todo Make the listSize configurable at instance creation time. */ static constexpr int listSize = 16; - class ControlRingBuffer : public std::array<Info, listSize> + template<typename T> + class ControlRingBuffer : public std::array<T, listSize> { public: - Info &operator[](unsigned int index) + T &operator[](unsigned int index) { - return std::array<Info, listSize>::operator[](index % listSize); + return std::array<T, listSize>::operator[](index % listSize); } - const Info &operator[](unsigned int index) const + const T &operator[](unsigned int index) const { - return std::array<Info, listSize>::operator[](index % listSize); + return std::array<T, listSize>::operator[](index % listSize); } }; @@ -75,7 +76,7 @@ private: uint32_t queueCount_; uint32_t writeCount_; /* \todo Evaluate if we should index on ControlId * or unsigned int */ - std::unordered_map<const ControlId *, ControlRingBuffer> values_; + std::unordered_map<const ControlId *, ControlRingBuffer<Info>> values_; }; } /* namespace libcamera */
Convert ControlRingBuffer to a templated class to allow arbitrary ring buffer array types to be defined. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> --- include/libcamera/internal/delayed_controls.h | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-)