From ad2d317a0c15ad475844b239128360b605eb6d8f Mon Sep 17 00:00:00 2001 From: Jacopo Mondi Date: Thu, 22 Jan 2026 18:40:55 +0100 Subject: [PATCH] ipa: ipu3: Retain Camera::controls() after ipa->configure() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Similar to what commit acfd60276763 ("ipa: rkisp1: Fix algorithm controls vanish after configure") did for the RkISP1 IPA, replace the usage of unordered_map::merge() at updateControls() time with unordered_map::insert(). As unordered_map::merge moves items from the source map, it deletes controls registered at algorithms initialization time in the ipaContext.ctrlMap. As at configure() time updateControls() is called again and the list of Camera controls is refreshed, the controls registered at algorithms initialization time are lost. Fixes: 87353f2bba28 ("ipa: ipu3: Derive ipu3::algorithms::Agc from AgcMeanLuminance") Signed-off-by: Jacopo Mondi Reviewed-by: Barnabás Pőcze Reviewed-by: Kieran Bingham --- src/ipa/ipu3/ipu3.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp index b926f579..03d873f2 100644 --- a/src/ipa/ipu3/ipu3.cpp +++ b/src/ipa/ipu3/ipu3.cpp @@ -285,7 +285,7 @@ void IPAIPU3::updateControls(const IPACameraSensorInfo &sensorInfo, frameDurations[1], Span{ { frameDurations[2], frameDurations[2] } }); - controls.merge(context_.ctrlMap); + controls.insert(context_.ctrlMap.begin(), context_.ctrlMap.end()); *ipaControls = ControlInfoMap(std::move(controls), controls::controls); }