libcamera: controls: initialise control info to ControlTypeNone by default

The default ControlInfo constructor allows partially initialising the
min/max/def values. Uninitialised values are assigned to 0 by default.
This implicit initialisation makes it impossible to distinguish between
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@gmx.de>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
This commit is contained in:
Christian Rauch 2022-09-03 23:33:30 +02:00 committed by Paul Elder
parent cbc2be34ed
commit 5fd18af233
2 changed files with 5 additions and 5 deletions

View file

@ -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);

View file

@ -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;
}