[libcamera-devel] [PATCH 2/4] libcamera: camera: Return a reference to the new configuration when adding

Kieran Bingham kieran.bingham at ideasonboard.com
Mon Jun 29 18:39:14 CEST 2020


Facilitate easily referencing of the newly added StreamConfiguration
as the source structure is copied, and not used after it has been added.

This simplifies the caller, and allows the caller to compare the
structure it passed to add, and the newly added configuration after
validate() has been called.

Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
---
 include/libcamera/camera.h |  3 ++-
 src/libcamera/camera.cpp   | 10 +++++++++-
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/include/libcamera/camera.h b/include/libcamera/camera.h
index 4d1a4a9f52ec..aee3a69881fc 100644
--- a/include/libcamera/camera.h
+++ b/include/libcamera/camera.h
@@ -38,7 +38,8 @@ public:
 
 	virtual ~CameraConfiguration();
 
-	void addConfiguration(const StreamConfiguration &cfg);
+	StreamConfiguration &addConfiguration(const StreamConfiguration &cfg);
+
 	virtual Status validate() = 0;
 
 	StreamConfiguration &at(unsigned int index);
diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
index 69a1b4428e3f..a3b91cecc86d 100644
--- a/src/libcamera/camera.cpp
+++ b/src/libcamera/camera.cpp
@@ -104,10 +104,18 @@ CameraConfiguration::~CameraConfiguration()
 /**
  * \brief Add a stream configuration to the camera configuration
  * \param[in] cfg The stream configuration
+ *
+ * This method adds a new stream configuration to the CameraConfiguration using
+ * the values given in cfg, which are copied. A reference to the destination
+ * new StreamConfiguration is returned.
+ *
+ * \return A reference to the newly added stream configuration
  */
-void CameraConfiguration::addConfiguration(const StreamConfiguration &cfg)
+StreamConfiguration &CameraConfiguration::addConfiguration(const StreamConfiguration &cfg)
 {
 	config_.push_back(cfg);
+
+	return config_.back();
 }
 
 /**
-- 
2.25.1



More information about the libcamera-devel mailing list