mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-06-20 14:33:04 -04:00
buffers: fix the params iteration logic
A 0 result from the iteration with a NULL filter means the end of the iteration, if we get this for the first item, we assume there was no item (same as unknown item) A 0 result for the iteration with filter means nothing matches the filter and so the filter should not be included in the result. A result of -ENOENT means the param is unknown and the filter should be included in the result. Fixes #5313
This commit is contained in:
parent
31e48d56f9
commit
db569ab566
1 changed files with 2 additions and 4 deletions
|
|
@ -159,10 +159,10 @@ param_filter(struct pw_buffers *this,
|
||||||
if (in_res < 1) {
|
if (in_res < 1) {
|
||||||
/* in_res == -ENOENT : unknown parameter, assume NULL and we will
|
/* in_res == -ENOENT : unknown parameter, assume NULL and we will
|
||||||
* exit the loop below.
|
* exit the loop below.
|
||||||
* in_res == 0 : no data, assume NULL
|
* in_res == 0 : no data, assume NULL when first item
|
||||||
* in_res < 0 : some error, exit now
|
* in_res < 0 : some error, exit now
|
||||||
*/
|
*/
|
||||||
if (in_res == 0)
|
if (in_res == 0 && iidx == 0)
|
||||||
in_res = -ENOENT;
|
in_res = -ENOENT;
|
||||||
if (in_res == -ENOENT)
|
if (in_res == -ENOENT)
|
||||||
iparam = NULL;
|
iparam = NULL;
|
||||||
|
|
@ -179,8 +179,6 @@ param_filter(struct pw_buffers *this,
|
||||||
id, &oidx, iparam, &oparam, result);
|
id, &oidx, iparam, &oparam, result);
|
||||||
|
|
||||||
/* out_res < 1 : no value or error, exit now */
|
/* out_res < 1 : no value or error, exit now */
|
||||||
if (out_res == 0)
|
|
||||||
out_res = -ENOENT;
|
|
||||||
if (out_res < 1)
|
if (out_res < 1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue