[libcamera-devel] [PATCH v3 2/2] libcamera: control: initialise control info to ControlTypeNone by default

paul.elder at ideasonboard.com paul.elder at ideasonboard.com
Sat Sep 3 02:52:25 CEST 2022


On Sat, Sep 03, 2022 at 12:49:39AM +0200, Christian Rauch via libcamera-devel wrote:
> The default ControlInfo constructor allows to partially initialised the

s/to partially initialised/partially initialising/

> min/max/def values. Uninitialised values are assigned to 0 by default. This
> implicit initialisation makes it impossible to distinguish between and

s/and/an/

> uninitialised and an explicitly 0-initialised ControlValue.
> 
> Default construct the ControlValue in the ControlInfo default contructor to
> explicitly represent uninitialised values by the ControlTypeNone type.
> 
> Signed-off-by: Christian Rauch <Rauch.Christian at gmx.de>

Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>

> ---
>  include/libcamera/controls.h   | 6 +++---
>  test/controls/control_info.cpp | 4 ++--
>  2 files changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/include/libcamera/controls.h b/include/libcamera/controls.h
> index ebc168fc..38d0a3e8 100644
> --- a/include/libcamera/controls.h
> +++ b/include/libcamera/controls.h
> @@ -268,9 +268,9 @@ private:
>  class ControlInfo
>  {
>  public:
> -	explicit ControlInfo(const ControlValue &min = 0,
> -			     const ControlValue &max = 0,
> -			     const ControlValue &def = 0);
> +	explicit ControlInfo(const ControlValue &min = {},
> +			     const ControlValue &max = {},
> +			     const ControlValue &def = {});
>  	explicit ControlInfo(Span<const ControlValue> values,
>  			     const ControlValue &def = {});
>  	explicit ControlInfo(std::set<bool> values, bool def);
> diff --git a/test/controls/control_info.cpp b/test/controls/control_info.cpp
> index 2827473b..56b4101f 100644
> --- a/test/controls/control_info.cpp
> +++ b/test/controls/control_info.cpp
> @@ -26,8 +26,8 @@ protected:
>  		 */
>  		ControlInfo brightness;
> 
> -		if (brightness.min().get<int32_t>() != 0 ||
> -		    brightness.max().get<int32_t>() != 0) {
> +		if (brightness.min().type() != ControlType::ControlTypeNone ||
> +		    brightness.max().type() != ControlType::ControlTypeNone) {
>  			cout << "Invalid control range for Brightness" << endl;
>  			return TestFail;
>  		}
> --
> 2.34.1
> 


More information about the libcamera-devel mailing list