libcamera/include/libcamera/framebuffer_allocator.h
Tomi Valkeinen f517960c6a FrameBufferAllocator: fix non-copyability
FrameBufferAllocator is supposed to delete copy constructor and
copy-assignment operator. It doesn't do that as it uses Camera as a
parameter instead of FrameBufferAllocator.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@iki.fi>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2020-09-29 03:55:27 +03:00

42 lines
1,011 B
C++

/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Copyright (C) 2019, Google Inc.
*
* framebuffer_allocator.h - FrameBuffer allocator
*/
#ifndef __LIBCAMERA_FRAMEBUFFER_ALLOCATOR_H__
#define __LIBCAMERA_FRAMEBUFFER_ALLOCATOR_H__
#include <map>
#include <memory>
#include <vector>
namespace libcamera {
class Camera;
class FrameBuffer;
class Stream;
class FrameBufferAllocator
{
public:
FrameBufferAllocator(std::shared_ptr<Camera> camera);
FrameBufferAllocator(const FrameBufferAllocator &) = delete;
FrameBufferAllocator &operator=(const FrameBufferAllocator &) = delete;
~FrameBufferAllocator();
int allocate(Stream *stream);
int free(Stream *stream);
bool allocated() const { return !buffers_.empty(); }
const std::vector<std::unique_ptr<FrameBuffer>> &buffers(Stream *stream) const;
private:
std::shared_ptr<Camera> camera_;
std::map<Stream *, std::vector<std::unique_ptr<FrameBuffer>>> buffers_;
};
} /* namespace libcamera */
#endif /* __LIBCAMERA_FRAMEBUFFER_ALLOCATOR_H__ */