libcamera: controls: Store reference to the InfoMap
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@jmondi.org> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
This commit is contained in:
parent
113cfb1e08
commit
cdc68bf7f7
2 changed files with 17 additions and 3 deletions
|
@ -233,12 +233,16 @@ public:
|
||||||
const ControlValue &get(unsigned int id) const;
|
const ControlValue &get(unsigned int id) const;
|
||||||
void set(unsigned int id, const ControlValue &value);
|
void set(unsigned int id, const ControlValue &value);
|
||||||
|
|
||||||
|
const ControlInfoMap *infoMap() const { return infoMap_; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const ControlValue *find(unsigned int id) const;
|
const ControlValue *find(unsigned int id) const;
|
||||||
ControlValue *find(unsigned int id);
|
ControlValue *find(unsigned int id);
|
||||||
|
|
||||||
ControlValidator *validator_;
|
ControlValidator *validator_;
|
||||||
const ControlIdMap *idmap_;
|
const ControlIdMap *idmap_;
|
||||||
|
const ControlInfoMap *infoMap_;
|
||||||
|
|
||||||
ControlListMap controls_;
|
ControlListMap controls_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -597,7 +597,7 @@ void ControlInfoMap::generateIdmap()
|
||||||
* be used directly by application.
|
* be used directly by application.
|
||||||
*/
|
*/
|
||||||
ControlList::ControlList()
|
ControlList::ControlList()
|
||||||
: validator_(nullptr), idmap_(nullptr)
|
: validator_(nullptr), idmap_(nullptr), infoMap_(nullptr)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -611,7 +611,7 @@ ControlList::ControlList()
|
||||||
* argument.
|
* argument.
|
||||||
*/
|
*/
|
||||||
ControlList::ControlList(const ControlIdMap &idmap, ControlValidator *validator)
|
ControlList::ControlList(const ControlIdMap &idmap, ControlValidator *validator)
|
||||||
: validator_(validator), idmap_(&idmap)
|
: validator_(validator), idmap_(&idmap), infoMap_(nullptr)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -621,7 +621,7 @@ ControlList::ControlList(const ControlIdMap &idmap, ControlValidator *validator)
|
||||||
* \param[in] validator The validator (may be null)
|
* \param[in] validator The validator (may be null)
|
||||||
*/
|
*/
|
||||||
ControlList::ControlList(const ControlInfoMap &info, ControlValidator *validator)
|
ControlList::ControlList(const ControlInfoMap &info, ControlValidator *validator)
|
||||||
: validator_(validator), idmap_(&info.idmap())
|
: validator_(validator), idmap_(&info.idmap()), infoMap_(&info)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -771,6 +771,16 @@ void ControlList::set(unsigned int id, const ControlValue &value)
|
||||||
*val = 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 ControlValue *ControlList::find(unsigned int id) const
|
||||||
{
|
{
|
||||||
const auto iter = controls_.find(id);
|
const auto iter = controls_.find(id);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue