[libcamera-devel] [PATCH v2] libcamera: controls: Suppress error message from ControlList::get()

Naushir Patuck naush at raspberrypi.com
Wed Jul 20 10:15:34 CEST 2022


Now that ControlList::get() returns a std::optional<T> to handle missing
controls, the error log message in the call to ControlList::find() is
unnecessary and likely invalid.

Fix this by avoding the call to ControlList::find() from ControlList::get() and
replacing with a call to the underlying std::unordered_map::find().

Fixes: 1c4d48018505 ("libcamera: controls: Use std::optional to handle invalid control values")
Signed-off-by: Naushir Patuck <naush at raspberrypi.com>
---
 include/libcamera/controls.h | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/include/libcamera/controls.h b/include/libcamera/controls.h
index 192be78434dc..8362fce813fb 100644
--- a/include/libcamera/controls.h
+++ b/include/libcamera/controls.h
@@ -376,11 +376,12 @@ public:
 	template<typename T>
 	std::optional<T> get(const Control<T> &ctrl) const
 	{
-		const ControlValue *val = find(ctrl.id());
-		if (!val)
+		const auto entry = controls_.find(ctrl.id());
+		if (entry == controls_.end())
 			return std::nullopt;
 
-		return val->get<T>();
+		const ControlValue &val = entry->second;
+		return val.get<T>();
 	}
 
 	template<typename T, typename V>
-- 
2.25.1



More information about the libcamera-devel mailing list