[libcamera-devel] [PATCH v2 5/6] libcamera: Utilise LIBCAMERA_DISABLE_COPY
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Thu Feb 11 22:14:11 CET 2021
Hi Kieran,
Thank you for the patch.
On Thu, Feb 11, 2021 at 01:34:43PM +0000, Kieran Bingham wrote:
> Replace existing use cases where the copy constructor and copy
> assignment operator are deleted with the LIBCAMERA_DISABLE_COPY
> statement
>
> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> ---
> include/libcamera/camera.h | 6 +++---
> include/libcamera/camera_manager.h | 4 ++--
> include/libcamera/controls.h | 7 +++----
> include/libcamera/framebuffer_allocator.h | 7 ++++---
> include/libcamera/internal/byte_stream_buffer.h | 4 ++--
> include/libcamera/internal/camera_sensor.h | 6 +++---
> include/libcamera/internal/file.h | 6 +++---
> include/libcamera/internal/log.h | 6 +++++-
> include/libcamera/internal/pipeline_handler.h | 4 ++--
> include/libcamera/internal/v4l2_subdevice.h | 5 +++--
> include/libcamera/internal/v4l2_videodevice.h | 6 +++---
> include/libcamera/request.h | 5 +++--
> 12 files changed, 36 insertions(+), 30 deletions(-)
>
> diff --git a/include/libcamera/camera.h b/include/libcamera/camera.h
> index cff9f46e801b..568740a37778 100644
> --- a/include/libcamera/camera.h
> +++ b/include/libcamera/camera.h
> @@ -81,9 +81,6 @@ public:
> const std::string &id,
> const std::set<Stream *> &streams);
>
> - Camera(const Camera &) = delete;
> - Camera &operator=(const Camera &) = delete;
> -
> const std::string &id() const;
>
> Signal<Request *, FrameBuffer *> bufferCompleted;
> @@ -109,6 +106,9 @@ public:
> private:
> Camera(PipelineHandler *pipe, const std::string &id,
> const std::set<Stream *> &streams);
> +
> + LIBCAMERA_DISABLE_COPY(Camera);
Let's move this right after "private:" for consistency.
> +
> ~Camera();
>
> friend class PipelineHandler;
> diff --git a/include/libcamera/camera_manager.h b/include/libcamera/camera_manager.h
> index 7b8e533fadd6..467cfd0ac4ac 100644
> --- a/include/libcamera/camera_manager.h
> +++ b/include/libcamera/camera_manager.h
> @@ -25,8 +25,6 @@ class CameraManager : public Object, public Extensible
> LIBCAMERA_DECLARE_PRIVATE(CameraManager)
> public:
> CameraManager();
> - CameraManager(const CameraManager &) = delete;
> - CameraManager &operator=(const CameraManager &) = delete;
> ~CameraManager();
>
> int start();
> @@ -46,6 +44,8 @@ public:
> Signal<std::shared_ptr<Camera>> cameraRemoved;
>
> private:
> + LIBCAMERA_DISABLE_COPY(CameraManager);
> +
> static const std::string version_;
> static CameraManager *self_;
> };
> diff --git a/include/libcamera/controls.h b/include/libcamera/controls.h
> index 3b7f3347761e..a5c9bda28661 100644
> --- a/include/libcamera/controls.h
> +++ b/include/libcamera/controls.h
> @@ -14,6 +14,7 @@
> #include <unordered_map>
> #include <vector>
>
> +#include <libcamera/class.h>
> #include <libcamera/geometry.h>
> #include <libcamera/span.h>
>
> @@ -220,8 +221,7 @@ public:
> ControlType type() const { return type_; }
>
> private:
> - ControlId &operator=(const ControlId &) = delete;
> - ControlId(const ControlId &) = delete;
> + LIBCAMERA_DISABLE_COPY(ControlId);
This, and Control, should use LIBCAMERA_DISABLE_COPY_AND_MOVE. You can
do so in an additional patch, or split this change out to a patch that
uses the macro and changes the semantics in one go.
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
>
> unsigned int id_;
> std::string name_;
> @@ -260,8 +260,7 @@ public:
> }
>
> private:
> - Control(const Control &) = delete;
> - Control &operator=(const Control &) = delete;
> + LIBCAMERA_DISABLE_COPY(Control);
> };
>
> class ControlInfo
> diff --git a/include/libcamera/framebuffer_allocator.h b/include/libcamera/framebuffer_allocator.h
> index a96aaeae58ce..9e42de280c98 100644
> --- a/include/libcamera/framebuffer_allocator.h
> +++ b/include/libcamera/framebuffer_allocator.h
> @@ -11,6 +11,8 @@
> #include <memory>
> #include <vector>
>
> +#include <libcamera/class.h>
> +
> namespace libcamera {
>
> class Camera;
> @@ -21,9 +23,6 @@ class FrameBufferAllocator
> {
> public:
> FrameBufferAllocator(std::shared_ptr<Camera> camera);
> - FrameBufferAllocator(const FrameBufferAllocator &) = delete;
> - FrameBufferAllocator &operator=(const FrameBufferAllocator &) = delete;
> -
> ~FrameBufferAllocator();
>
> int allocate(Stream *stream);
> @@ -33,6 +32,8 @@ public:
> const std::vector<std::unique_ptr<FrameBuffer>> &buffers(Stream *stream) const;
>
> private:
> + LIBCAMERA_DISABLE_COPY(FrameBufferAllocator);
> +
> std::shared_ptr<Camera> camera_;
> std::map<Stream *, std::vector<std::unique_ptr<FrameBuffer>>> buffers_;
> };
> diff --git a/include/libcamera/internal/byte_stream_buffer.h b/include/libcamera/internal/byte_stream_buffer.h
> index db59577dc332..ec8b0b2ada86 100644
> --- a/include/libcamera/internal/byte_stream_buffer.h
> +++ b/include/libcamera/internal/byte_stream_buffer.h
> @@ -11,6 +11,7 @@
> #include <stdint.h>
> #include <type_traits>
>
> +#include <libcamera/class.h>
> #include <libcamera/span.h>
>
> namespace libcamera {
> @@ -65,8 +66,7 @@ public:
> }
>
> private:
> - ByteStreamBuffer(const ByteStreamBuffer &other) = delete;
> - ByteStreamBuffer &operator=(const ByteStreamBuffer &other) = delete;
> + LIBCAMERA_DISABLE_COPY(ByteStreamBuffer);
>
> void setOverflow();
>
> diff --git a/include/libcamera/internal/camera_sensor.h b/include/libcamera/internal/camera_sensor.h
> index c8f81882a958..9d26bd24a321 100644
> --- a/include/libcamera/internal/camera_sensor.h
> +++ b/include/libcamera/internal/camera_sensor.h
> @@ -11,6 +11,7 @@
> #include <string>
> #include <vector>
>
> +#include <libcamera/class.h>
> #include <libcamera/controls.h>
> #include <libcamera/geometry.h>
>
> @@ -45,9 +46,6 @@ public:
> explicit CameraSensor(const MediaEntity *entity);
> ~CameraSensor();
>
> - CameraSensor(const CameraSensor &) = delete;
> - CameraSensor &operator=(const CameraSensor &) = delete;
> -
> int init();
>
> const std::string &model() const { return model_; }
> @@ -74,6 +72,8 @@ protected:
> std::string logPrefix() const override;
>
> private:
> + LIBCAMERA_DISABLE_COPY(CameraSensor);
> +
> int generateId();
> int validateSensorDriver();
> void initVimcDefaultProperties();
> diff --git a/include/libcamera/internal/file.h b/include/libcamera/internal/file.h
> index 9b6d011f5e9d..2f75aaf00dab 100644
> --- a/include/libcamera/internal/file.h
> +++ b/include/libcamera/internal/file.h
> @@ -11,6 +11,7 @@
> #include <string>
> #include <sys/types.h>
>
> +#include <libcamera/class.h>
> #include <libcamera/span.h>
>
> namespace libcamera {
> @@ -34,9 +35,6 @@ public:
> File();
> ~File();
>
> - File(const File &) = delete;
> - File &operator=(const File &) = delete;
> -
> const std::string &fileName() const { return name_; }
> void setFileName(const std::string &name);
> bool exists() const;
> @@ -62,6 +60,8 @@ public:
> static bool exists(const std::string &name);
>
> private:
> + LIBCAMERA_DISABLE_COPY(File);
> +
> void unmapAll();
>
> std::string name_;
> diff --git a/include/libcamera/internal/log.h b/include/libcamera/internal/log.h
> index 4b10087a4718..5c44d623797a 100644
> --- a/include/libcamera/internal/log.h
> +++ b/include/libcamera/internal/log.h
> @@ -10,6 +10,8 @@
> #include <chrono>
> #include <sstream>
>
> +#include <libcamera/class.h>
> +
> #include "libcamera/internal/utils.h"
>
> namespace libcamera {
> @@ -57,7 +59,7 @@ public:
> LogSeverity severity);
> LogMessage(const char *fileName, unsigned int line,
> const LogCategory &category, LogSeverity severity);
> - LogMessage(const LogMessage &) = delete;
> +
> LogMessage(LogMessage &&);
> ~LogMessage();
>
> @@ -70,6 +72,8 @@ public:
> const std::string msg() const { return msgStream_.str(); }
>
> private:
> + LIBCAMERA_DISABLE_COPY(LogMessage);
> +
> void init(const char *fileName, unsigned int line);
>
> std::ostringstream msgStream_;
> diff --git a/include/libcamera/internal/pipeline_handler.h b/include/libcamera/internal/pipeline_handler.h
> index 0748f8634608..d5913eae88ca 100644
> --- a/include/libcamera/internal/pipeline_handler.h
> +++ b/include/libcamera/internal/pipeline_handler.h
> @@ -15,6 +15,7 @@
> #include <sys/types.h>
> #include <vector>
>
> +#include <libcamera/class.h>
> #include <libcamera/controls.h>
> #include <libcamera/object.h>
> #include <libcamera/stream.h>
> @@ -49,8 +50,7 @@ public:
> std::unique_ptr<IPAProxy> ipa_;
>
> private:
> - CameraData(const CameraData &) = delete;
> - CameraData &operator=(const CameraData &) = delete;
> + LIBCAMERA_DISABLE_COPY(CameraData);
> };
>
> class PipelineHandler : public std::enable_shared_from_this<PipelineHandler>,
> diff --git a/include/libcamera/internal/v4l2_subdevice.h b/include/libcamera/internal/v4l2_subdevice.h
> index eb25fa2fd01b..f983ae6302bb 100644
> --- a/include/libcamera/internal/v4l2_subdevice.h
> +++ b/include/libcamera/internal/v4l2_subdevice.h
> @@ -11,6 +11,7 @@
> #include <string>
> #include <vector>
>
> +#include <libcamera/class.h>
> #include <libcamera/geometry.h>
>
> #include "libcamera/internal/formats.h"
> @@ -41,8 +42,6 @@ public:
> };
>
> explicit V4L2Subdevice(const MediaEntity *entity);
> - V4L2Subdevice(const V4L2Subdevice &) = delete;
> - V4L2Subdevice &operator=(const V4L2Subdevice &) = delete;
> ~V4L2Subdevice();
>
> int open();
> @@ -68,6 +67,8 @@ protected:
> std::string logPrefix() const override;
>
> private:
> + LIBCAMERA_DISABLE_COPY(V4L2Subdevice);
> +
> std::vector<unsigned int> enumPadCodes(unsigned int pad);
> std::vector<SizeRange> enumPadSizes(unsigned int pad,
> unsigned int code);
> diff --git a/include/libcamera/internal/v4l2_videodevice.h b/include/libcamera/internal/v4l2_videodevice.h
> index 626dfbcd6113..f8da608603ef 100644
> --- a/include/libcamera/internal/v4l2_videodevice.h
> +++ b/include/libcamera/internal/v4l2_videodevice.h
> @@ -17,6 +17,7 @@
> #include <linux/videodev2.h>
>
> #include <libcamera/buffer.h>
> +#include <libcamera/class.h>
> #include <libcamera/geometry.h>
> #include <libcamera/pixel_format.h>
> #include <libcamera/signal.h>
> @@ -175,11 +176,8 @@ public:
>
> explicit V4L2VideoDevice(const std::string &deviceNode);
> explicit V4L2VideoDevice(const MediaEntity *entity);
> - V4L2VideoDevice(const V4L2VideoDevice &) = delete;
> ~V4L2VideoDevice();
>
> - V4L2VideoDevice &operator=(const V4L2VideoDevice &) = delete;
> -
> int open();
> int open(int handle, enum v4l2_buf_type type);
> void close();
> @@ -219,6 +217,8 @@ protected:
> std::string logPrefix() const override;
>
> private:
> + LIBCAMERA_DISABLE_COPY(V4L2VideoDevice);
> +
> int getFormatMeta(V4L2DeviceFormat *format);
> int trySetFormatMeta(V4L2DeviceFormat *format, bool set);
>
> diff --git a/include/libcamera/request.h b/include/libcamera/request.h
> index 655b1324bae8..3354ae9083f1 100644
> --- a/include/libcamera/request.h
> +++ b/include/libcamera/request.h
> @@ -12,6 +12,7 @@
> #include <stdint.h>
> #include <unordered_set>
>
> +#include <libcamera/class.h>
> #include <libcamera/controls.h>
> #include <libcamera/signal.h>
>
> @@ -39,8 +40,6 @@ public:
> using BufferMap = std::map<const Stream *, FrameBuffer *>;
>
> Request(Camera *camera, uint64_t cookie = 0);
> - Request(const Request &) = delete;
> - Request &operator=(const Request &) = delete;
> ~Request();
>
> void reuse(ReuseFlag flags = Default);
> @@ -57,6 +56,8 @@ public:
> bool hasPendingBuffers() const { return !pending_.empty(); }
>
> private:
> + LIBCAMERA_DISABLE_COPY(Request);
> +
> friend class PipelineHandler;
>
> void complete();
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list