diff --git a/spa/plugins/audioconvert/audioadapter.c b/spa/plugins/audioconvert/audioadapter.c index c55b38183..4b50e1bad 100644 --- a/spa/plugins/audioconvert/audioadapter.c +++ b/spa/plugins/audioconvert/audioadapter.c @@ -108,28 +108,29 @@ struct impl { /** \endcond */ -static void follower_enum_params(struct impl *this, +static int follower_enum_params(struct impl *this, uint32_t id, uint32_t idx, struct spa_result_node_params *result, const struct spa_pod *filter, - struct spa_pod_builder *builder, - int *res) + struct spa_pod_builder *builder) { + int res; if (result->next < 0x10000) { - if ((*res = spa_node_enum_params_sync(this->convert, + if ((res = spa_node_enum_params_sync(this->convert, id, &result->next, filter, &result->param, builder)) == 1) - return; + return res; result->next = 0x10000; } if (result->next >= 0x10000 && this->follower_params_flags[idx] & SPA_PARAM_INFO_READ) { result->next &= 0xffff; - if ((*res = spa_node_enum_params_sync(this->follower, + if ((res = spa_node_enum_params_sync(this->follower, id, &result->next, filter, &result->param, builder)) == 1) { result->next |= 0x10000; - return; + return res; } } + return 0; } static int impl_node_enum_params(void *object, int seq, @@ -161,28 +162,28 @@ next: res = spa_node_enum_params(this->convert, seq, id, start, num, filter); return res; case SPA_PARAM_PropInfo: - follower_enum_params(this, id, IDX_PropInfo, &result, filter, &b, &res); - if (res == 1) - break; - return res; + if ((res = follower_enum_params(this, + id, IDX_PropInfo, &result, filter, &b)) != 1) + return res; + break; case SPA_PARAM_Props: - follower_enum_params(this, id, IDX_Props, &result, filter, &b, &res); - if (res == 1) - break; - return res; + if ((res = follower_enum_params(this, + id, IDX_Props, &result, filter, &b)) != 1) + return res; + break; case SPA_PARAM_ProcessLatency: - follower_enum_params(this, id, IDX_ProcessLatency, &result, filter, &b, &res); - if (res == 1) - break; - return res; + if ((res = follower_enum_params(this, + id, IDX_ProcessLatency, &result, filter, &b)) != 1) + return res; + break; case SPA_PARAM_EnumFormat: case SPA_PARAM_Format: case SPA_PARAM_Latency: if ((res = spa_node_port_enum_params_sync(this->follower, this->direction, 0, - id, &result.next, filter, &result.param, &b)) == 1) - break; - return res; + id, &result.next, filter, &result.param, &b)) != 1) + return res; + break; default: return -ENOENT; }