param_info: always copy the param_info

always copy the param_info so that we have the ID correct (even when
the flags remain unchanged)
This commit is contained in:
Wim Taymans 2020-02-26 12:06:02 +01:00
parent bcdd47273d
commit edbf1ff500
3 changed files with 6 additions and 12 deletions

View file

@ -635,10 +635,8 @@ static void device_info(void *data, const struct spa_device_info *info)
spa_debug_type_find_name(spa_type_param, info->params[i].id),
device->info.params[i].flags, info->params[i].flags);
if (device->info.params[i].flags == info->params[i].flags)
continue;
if (info->params[i].flags & SPA_PARAM_INFO_READ)
if (device->info.params[i].flags != info->params[i].flags &&
info->params[i].flags & SPA_PARAM_INFO_READ)
changed_ids[n_changed_ids++] = info->params[i].id;
device->info.params[i] = info->params[i];

View file

@ -1122,10 +1122,8 @@ static void node_info(void *data, const struct spa_node_info *info)
spa_debug_type_find_name(spa_type_param, info->params[i].id),
node->info.params[i].flags, info->params[i].flags);
if (node->info.params[i].flags == info->params[i].flags)
continue;
if (info->params[i].flags & SPA_PARAM_INFO_READ)
if (node->info.params[i].flags != info->params[i].flags &&
info->params[i].flags & SPA_PARAM_INFO_READ)
changed_ids[n_changed_ids++] = info->params[i].id;
node->info.params[i] = info->params[i];

View file

@ -342,10 +342,8 @@ static void update_info(struct pw_impl_port *port, const struct spa_port_info *i
port->info.n_params = SPA_MIN(info->n_params, SPA_N_ELEMENTS(port->params));
for (i = 0; i < port->info.n_params; i++) {
if (port->info.params[i].flags == info->params[i].flags)
continue;
if (info->params[i].flags & SPA_PARAM_INFO_READ)
if (port->info.params[i].flags != info->params[i].flags &&
info->params[i].flags & SPA_PARAM_INFO_READ)
changed_ids[n_changed_ids++] = info->params[i].id;
port->info.params[i] = info->params[i];