diff --git a/src/pipewire/filter.c b/src/pipewire/filter.c index 8e467b3ff..4b25a3788 100644 --- a/src/pipewire/filter.c +++ b/src/pipewire/filter.c @@ -611,8 +611,8 @@ static int impl_port_set_param(void *object, struct port *port; int res; - if (impl->disconnecting) - return param == NULL ? 0 : -EIO; + if (impl->disconnecting && param != NULL) + return -EIO; pw_log_debug(NAME" %p: param changed: %p %d", impl, param, impl->disconnecting); @@ -650,8 +650,8 @@ static int impl_port_use_buffers(void *object, int prot, res; int size = 0; - if (impl->disconnecting) - return n_buffers == 0 ? 0 : -EIO; + if (impl->disconnecting && n_buffers > 0) + return -EIO; if ((port = get_port(impl, direction, port_id)) == NULL) return -EINVAL; diff --git a/src/pipewire/stream.c b/src/pipewire/stream.c index d387d8d85..a27876a01 100644 --- a/src/pipewire/stream.c +++ b/src/pipewire/stream.c @@ -610,8 +610,8 @@ static int impl_port_set_param(void *object, struct pw_stream *stream = &impl->this; int res; - if (impl->disconnecting) - return param == NULL ? 0 : -EIO; + if (impl->disconnecting && param != NULL) + return -EIO; pw_log_debug(NAME" %p: param id %d (%s) changed: %p", impl, id, spa_debug_type_find_name(spa_type_param, id), param); @@ -646,8 +646,8 @@ static int impl_port_use_buffers(void *object, int prot, res; int size = 0; - if (impl->disconnecting) - return n_buffers == 0 ? 0 : -EIO; + if (impl->disconnecting && n_buffers > 0) + return -EIO; prot = PROT_READ | (direction == SPA_DIRECTION_OUTPUT ? PROT_WRITE : 0);