[libcamera-devel] [PATCH v2 09/24] libcamera: controls: Store reference to the InfoMap
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Fri Nov 8 21:53:54 CET 2019
From: Jacopo Mondi <jacopo at jmondi.org>
Store a reference to the ControlInfoMap used to create a ControlList and
provide an operation to retrieve it. This will be used to implement
serialization of ControlList.
Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
---
include/libcamera/controls.h | 4 ++++
src/libcamera/controls.cpp | 16 +++++++++++++---
2 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/include/libcamera/controls.h b/include/libcamera/controls.h
index b35e006bc046..baca684444a7 100644
--- a/include/libcamera/controls.h
+++ b/include/libcamera/controls.h
@@ -232,12 +232,16 @@ public:
const ControlValue &get(unsigned int id) const;
void set(unsigned int id, const ControlValue &value);
+ const ControlInfoMap *infoMap() const { return infoMap_; }
+
private:
const ControlValue *find(unsigned int id) const;
ControlValue *find(unsigned int id);
ControlValidator *validator_;
const ControlIdMap *idmap_;
+ const ControlInfoMap *infoMap_;
+
ControlListMap controls_;
};
diff --git a/src/libcamera/controls.cpp b/src/libcamera/controls.cpp
index 178ce3d99bce..eae0250a92e3 100644
--- a/src/libcamera/controls.cpp
+++ b/src/libcamera/controls.cpp
@@ -595,7 +595,7 @@ void ControlInfoMap::generateIdmap()
* be used directly by application.
*/
ControlList::ControlList()
- : validator_(nullptr), idmap_(nullptr)
+ : validator_(nullptr), idmap_(nullptr), infoMap_(nullptr)
{
}
@@ -609,7 +609,7 @@ ControlList::ControlList()
* argument.
*/
ControlList::ControlList(const ControlIdMap &idmap, ControlValidator *validator)
- : validator_(validator), idmap_(&idmap)
+ : validator_(validator), idmap_(&idmap), infoMap_(nullptr)
{
}
@@ -619,7 +619,7 @@ ControlList::ControlList(const ControlIdMap &idmap, ControlValidator *validator)
* \param[in] validator The validator (may be null)
*/
ControlList::ControlList(const ControlInfoMap &info, ControlValidator *validator)
- : validator_(validator), idmap_(&info.idmap())
+ : validator_(validator), idmap_(&info.idmap()), infoMap_(&info)
{
}
@@ -769,6 +769,16 @@ void ControlList::set(unsigned int id, const ControlValue &value)
*val = value;
}
+/**
+ * \fn ControlList::infoMap()
+ * \brief Retrieve the ControlInfoMap used to construct the ControlList
+ *
+ * \return The ControlInfoMap used to construct the ControlList. ControlList
+ * instances constructed with ControlList() or
+ * ControlList(const ControlIdMap &idmap, ControlValidator *validator) have no
+ * associated ControlInfoMap, nullptr is returned in that case.
+ */
+
const ControlValue *ControlList::find(unsigned int id) const
{
const auto iter = controls_.find(id);
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list