impl: always copy the id in param_info

Or else we will not have the right id when the flags are 0
This commit is contained in:
Wim Taymans 2020-12-17 16:11:30 +01:00
parent f8c96167f9
commit b812dbcbf6
3 changed files with 9 additions and 6 deletions

View file

@ -733,19 +733,20 @@ static void device_info(void *data, const struct spa_device_info *info)
uint32_t id = info->params[i].id;
pw_log_debug(NAME" %p: param %d id:%d (%s) %08x:%08x", device, i,
id, spa_debug_type_find_name(spa_type_param, id),
device->info.params[i].flags, info->params[i].flags);
id, spa_debug_type_find_name(spa_type_param, id),
device->info.params[i].flags, info->params[i].flags);
if (device->info.params[i].flags == info->params[i].flags)
device->info.params[i].id = device->params[i].id;
if (device->info.params[i].flags == info->params[i].flags)
continue;
pw_log_debug(NAME" %p: update param %d", device, id);
pw_param_clear(&impl->pending_list, id);
device->info.params[i] = info->params[i];
device->info.params[i].user = 0;
device->info.params[i] = info->params[i];
device->info.params[i].user = 0;
if (info->params[i].flags & SPA_PARAM_INFO_READ)
changed_ids[n_changed_ids++] = id;
changed_ids[n_changed_ids++] = id;
}
}
emit_info_changed(device);

View file

@ -1276,6 +1276,7 @@ static void node_info(void *data, const struct spa_node_info *info)
id, spa_debug_type_find_name(spa_type_param, id),
node->info.params[i].flags, info->params[i].flags);
node->info.params[i].id = info->params[i].id;
if (node->info.params[i].flags == info->params[i].flags)
continue;

View file

@ -373,6 +373,7 @@ static void update_info(struct pw_impl_port *port, const struct spa_port_info *i
id, spa_debug_type_find_name(spa_type_param, id),
port->info.params[i].flags, info->params[i].flags);
port->info.params[i].id = info->params[i].id;
if (port->info.params[i].flags == info->params[i].flags)
continue;