mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-01 22:58:50 -04:00
stream: notify caller of partial set_param success
When we get a Format update during a Format set_param, return > 0 to the caller so that it knows we modified the param to something else. This can be used to fixate or deny updates to Format params in the stream and have the adapter adapt to this.
This commit is contained in:
parent
b9e5dde4ac
commit
088d741cda
1 changed files with 10 additions and 1 deletions
|
|
@ -901,6 +901,7 @@ static int impl_port_set_param(void *object,
|
|||
{
|
||||
struct stream *impl = object;
|
||||
struct pw_stream *stream = &impl->this;
|
||||
uint32_t user;
|
||||
int res;
|
||||
|
||||
pw_log_debug("%p: port:%d.%d id:%d (%s) param:%p disconnecting:%d", impl,
|
||||
|
|
@ -920,6 +921,7 @@ static int impl_port_set_param(void *object,
|
|||
switch (id) {
|
||||
case SPA_PARAM_Format:
|
||||
clear_buffers(stream);
|
||||
user = impl->params[NODE_Format].user;
|
||||
break;
|
||||
case SPA_PARAM_Latency:
|
||||
parse_latency(stream, param);
|
||||
|
|
@ -933,10 +935,17 @@ static int impl_port_set_param(void *object,
|
|||
if (stream->state == PW_STREAM_STATE_ERROR)
|
||||
return stream->error_res;
|
||||
|
||||
switch (id) {
|
||||
case SPA_PARAM_Format:
|
||||
if (user != impl->params[NODE_Format].user)
|
||||
res++;
|
||||
break;
|
||||
}
|
||||
|
||||
emit_node_info(impl, false);
|
||||
emit_port_info(impl, false);
|
||||
|
||||
return 0;
|
||||
return res;
|
||||
}
|
||||
|
||||
static int impl_port_use_buffers(void *object,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue