[libcamera-devel] [PATCH v3 3/8] libcamera: frame_buffer_allocator: Add clear()

Jacopo Mondi jacopo at jmondi.org
Thu Sep 24 17:41:29 CEST 2020


Hi Kieran,

On Wed, Sep 23, 2020 at 01:05:37PM +0100, Kieran Bingham wrote:
> Hi Jacopo,
>
> On 22/09/2020 10:47, Jacopo Mondi wrote:
> > Add a clear() method to the FrameBufferAllocator class that
> > frees all the buffers previously reserved by the allocator.
> >
> > Reviewed-by: Hirokazu Honda <hiroh at chromium.org>
> > Reviewed-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> > Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
> > ---
> >  include/libcamera/framebuffer_allocator.h | 1 +
> >  src/libcamera/framebuffer_allocator.cpp   | 8 ++++++++
> >  2 files changed, 9 insertions(+)
> >
> > diff --git a/include/libcamera/framebuffer_allocator.h b/include/libcamera/framebuffer_allocator.h
> > index 78f1353964eb..2a4d538a0cb2 100644
> > --- a/include/libcamera/framebuffer_allocator.h
> > +++ b/include/libcamera/framebuffer_allocator.h
> > @@ -28,6 +28,7 @@ public:
> >
> >  	int allocate(Stream *stream);
> >  	int free(Stream *stream);
> > +	void clear();
> >
> >  	bool allocated() const { return !buffers_.empty(); }
> >  	const std::vector<std::unique_ptr<FrameBuffer>> &buffers(Stream *stream) const;
> > diff --git a/src/libcamera/framebuffer_allocator.cpp b/src/libcamera/framebuffer_allocator.cpp
> > index 2fbba37a1b0b..7ed80011c845 100644
> > --- a/src/libcamera/framebuffer_allocator.cpp
> > +++ b/src/libcamera/framebuffer_allocator.cpp
> > @@ -125,6 +125,14 @@ int FrameBufferAllocator::free(Stream *stream)
> >  	return 0;
> >  }
> >
> > +/**
> > + * \brief Free all the buffers previously allocated
> > + */
> > +void FrameBufferAllocator::clear()
> > +{
> > +	buffers_.clear();
> > +}
>
> Throwing more opportunities into the bike-shed..
>

By popular demand, I'll change this

> clear doesn't fit well for me either, I see Laurent suggested freeAll()
> or such.
>
> We could have an overload for free(no-arg) which clears 'all streams',
> i.e. free(stream) is just a filtered subset.

I'm not thrilled by an overload :/

>
> Otherwise, reset() would also feel appropriate here.

But I like reset!

>
> But I can see the need to be able to reset a FrameBufferAllocator() in
> some form, so if you're settled on the name:
>
> Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

Thanks

>
> > +
> >  /**
> >   * \fn FrameBufferAllocator::allocated()
> >   * \brief Check if the allocator has allocated buffers for any stream
> >
>
> --
> Regards
> --
> Kieran


More information about the libcamera-devel mailing list