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

Message ID 20200629163916.1815321-3-kieran.bingham@ideasonboard.com
State Superseded
Headers show
Series
  • Android HAL multi-stream support
Related show

Commit Message

Kieran Bingham June 29, 2020, 4:39 p.m. UTC
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@ideasonboard.com>
---
 include/libcamera/camera.h |  3 ++-
 src/libcamera/camera.cpp   | 10 +++++++++-
 2 files changed, 11 insertions(+), 2 deletions(-)

Patch

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();
 }
 
 /**