[libcamera-devel] [PATCH v2 02/12] android: camera_request: Turn struct into a class

Umang Jain umang.jain at ideasonboard.com
Tue Oct 19 13:47:52 CEST 2021


From: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

The Camera3RequestDescriptor structure is growing into an object with
member functions. Turn it into a class, uninline the destructor to
reduce code size, explicitly disable copy as requests are not copyable,
and delete the default constructor to force all instances to be fully
constructed.

Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
Reviewed-by: Hirokazu Honda <hiroh at chromium.org>
---
 src/android/camera_device.h    |  2 +-
 src/android/camera_request.cpp |  8 +++++---
 src/android/camera_request.h   | 13 +++++++++----
 3 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/src/android/camera_device.h b/src/android/camera_device.h
index 86224aa1..863cf414 100644
--- a/src/android/camera_device.h
+++ b/src/android/camera_device.h
@@ -33,7 +33,7 @@
 #include "camera_worker.h"
 #include "jpeg/encoder.h"
 
-struct Camera3RequestDescriptor;
+class Camera3RequestDescriptor;
 struct CameraConfigData;
 
 class CameraDevice : protected libcamera::Loggable
diff --git a/src/android/camera_request.cpp b/src/android/camera_request.cpp
index 93e546bf..16a632b3 100644
--- a/src/android/camera_request.cpp
+++ b/src/android/camera_request.cpp
@@ -10,10 +10,10 @@
 using namespace libcamera;
 
 /*
- * \struct Camera3RequestDescriptor
+ * \class Camera3RequestDescriptor
  *
- * A utility structure that groups information about a capture request to be
- * later re-used at request complete time to notify the framework.
+ * A utility class that groups information about a capture request to be later
+ * reused at request complete time to notify the framework.
  */
 
 Camera3RequestDescriptor::Camera3RequestDescriptor(
@@ -43,3 +43,5 @@ Camera3RequestDescriptor::Camera3RequestDescriptor(
 	request_ = std::make_unique<CaptureRequest>(camera,
 						    reinterpret_cast<uint64_t>(this));
 }
+
+Camera3RequestDescriptor::~Camera3RequestDescriptor() = default;
diff --git a/src/android/camera_request.h b/src/android/camera_request.h
index 1346f6fa..79dfdb58 100644
--- a/src/android/camera_request.h
+++ b/src/android/camera_request.h
@@ -10,6 +10,8 @@
 #include <memory>
 #include <vector>
 
+#include <libcamera/base/class.h>
+
 #include <libcamera/camera.h>
 #include <libcamera/framebuffer.h>
 
@@ -18,18 +20,18 @@
 #include "camera_metadata.h"
 #include "camera_worker.h"
 
-struct Camera3RequestDescriptor {
+class Camera3RequestDescriptor
+{
+public:
 	enum class Status {
 		Pending,
 		Success,
 		Error,
 	};
 
-	Camera3RequestDescriptor() = default;
-	~Camera3RequestDescriptor() = default;
 	Camera3RequestDescriptor(libcamera::Camera *camera,
 				 const camera3_capture_request_t *camera3Request);
-	Camera3RequestDescriptor &operator=(Camera3RequestDescriptor &&) = default;
+	~Camera3RequestDescriptor();
 
 	bool isPending() const { return status_ == Status::Pending; }
 
@@ -41,6 +43,9 @@ struct Camera3RequestDescriptor {
 
 	camera3_capture_result_t captureResult_ = {};
 	Status status_ = Status::Pending;
+
+private:
+	LIBCAMERA_DISABLE_COPY(Camera3RequestDescriptor)
 };
 
 #endif /* __ANDROID_CAMERA_REQUEST_H__ */
-- 
2.31.0



More information about the libcamera-devel mailing list