From 02add5b3dbf34e4f772fd1b2bc1528f6c8d4a98a Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 7 Nov 2022 12:36:15 +0100 Subject: [PATCH] impl: don't return -ENOENT when no params We checked above if the param is supported and return -ENOENT already. When we actually go enumerate the params but don't have any, return 0 and not an error. Fixes wireplumber#370 --- src/pipewire/impl-device.c | 5 +---- src/pipewire/impl-node.c | 5 +---- src/pipewire/impl-port.c | 5 +---- 3 files changed, 3 insertions(+), 12 deletions(-) diff --git a/src/pipewire/impl-device.c b/src/pipewire/impl-device.c index 097af348f..855b046de 100644 --- a/src/pipewire/impl-device.c +++ b/src/pipewire/impl-device.c @@ -328,7 +328,6 @@ int pw_impl_device_for_each_param(struct pw_impl_device *device, struct spa_pod_dynamic_builder b; struct spa_result_device_params result; uint32_t count = 0; - bool found = false; result.id = param_id; result.next = 0; @@ -337,8 +336,6 @@ int pw_impl_device_for_each_param(struct pw_impl_device *device, if (p->id != param_id) continue; - found = true; - result.index = result.next++; if (result.index < index) continue; @@ -354,7 +351,7 @@ int pw_impl_device_for_each_param(struct pw_impl_device *device, if (count == max) break; } - res = found ? 0 : -ENOENT; + res = 0; } else { user_data.cache = impl->cache_params && (filter == NULL && index == 0 && max == UINT32_MAX); diff --git a/src/pipewire/impl-node.c b/src/pipewire/impl-node.c index d6d0ec7f1..5480d273e 100644 --- a/src/pipewire/impl-node.c +++ b/src/pipewire/impl-node.c @@ -2015,7 +2015,6 @@ int pw_impl_node_for_each_param(struct pw_impl_node *node, struct spa_pod_dynamic_builder b; struct spa_result_node_params result; uint32_t count = 0; - bool found = false; result.id = param_id; result.next = 0; @@ -2024,8 +2023,6 @@ int pw_impl_node_for_each_param(struct pw_impl_node *node, if (p->id != param_id) continue; - found = true; - result.index = result.next++; if (result.index < index) continue; @@ -2042,7 +2039,7 @@ int pw_impl_node_for_each_param(struct pw_impl_node *node, if (count == max) break; } - res = found ? 0 : -ENOENT; + res = 0; } else { user_data.cache = impl->cache_params && (filter == NULL && index == 0 && max == UINT32_MAX); diff --git a/src/pipewire/impl-port.c b/src/pipewire/impl-port.c index f5651dd30..ad7e191f1 100644 --- a/src/pipewire/impl-port.c +++ b/src/pipewire/impl-port.c @@ -1248,7 +1248,6 @@ int pw_impl_port_for_each_param(struct pw_impl_port *port, struct spa_pod_dynamic_builder b; struct spa_result_node_params result; uint32_t count = 0; - bool found = false; result.id = param_id; result.next = 0; @@ -1257,8 +1256,6 @@ int pw_impl_port_for_each_param(struct pw_impl_port *port, if (p->id != param_id) continue; - found = true; - result.index = result.next++; if (result.index < index) continue; @@ -1275,7 +1272,7 @@ int pw_impl_port_for_each_param(struct pw_impl_port *port, if (count == max) break; } - res = found ? 0 : -ENOENT; + res = 0; } else { user_data.cache = impl->cache_params && (filter == NULL && index == 0 && max == UINT32_MAX);