libcemara: take care of index offset when enumerating controls

Add an index offset when enumerating controls. We insert 2 properties
before enumerating the controls so the index of the first control needs
to have an offset of 2.
This commit is contained in:
Wim Taymans 2025-05-17 14:05:23 +02:00
parent a66377cf42
commit 9207fea992
2 changed files with 4 additions and 4 deletions

View file

@ -273,7 +273,7 @@ next:
default:
return spa_libcamera_enum_controls(impl,
GET_OUT_PORT(impl, 0),
seq, result.index - 2, num, filter);
seq, result.index, 2, num, filter);
}
break;
}
@ -535,7 +535,7 @@ next:
switch (id) {
case SPA_PARAM_PropInfo:
return spa_libcamera_enum_controls(impl, port, seq, start, num, filter);
return spa_libcamera_enum_controls(impl, port, seq, start, 0, num, filter);
case SPA_PARAM_EnumFormat:
return spa_libcamera_enum_format(impl, port, seq, start, num, filter);

View file

@ -495,7 +495,7 @@ static uint32_t prop_id_to_control(struct impl *impl, uint32_t prop_id)
static int
spa_libcamera_enum_controls(struct impl *impl, struct port *port, int seq,
uint32_t start, uint32_t num,
uint32_t start, uint32_t offset, uint32_t num,
const struct spa_pod *filter)
{
const ControlInfoMap &info = impl->camera->controls();
@ -513,7 +513,7 @@ spa_libcamera_enum_controls(struct impl *impl, struct port *port, int seq,
result.next = start;
auto it = info.begin();
for (skip = result.next; skip; skip--)
for (skip = result.next - offset; skip; skip--)
it++;
if (false) {