pulse-server: support NULL set-default-sink/source

It is allowed to set a NULL value for the default source/sink, which
then simply clears any configured value.
This commit is contained in:
Wim Taymans 2021-03-06 19:58:52 +01:00
parent e42261c6d2
commit dbebbe2f33

View file

@ -4847,13 +4847,20 @@ static int do_set_default(struct client *client, uint32_t command, uint32_t tag,
pw_log_info(NAME" %p: [%s] %s tag:%u name:%s", impl, client->name, pw_log_info(NAME" %p: [%s] %s tag:%u name:%s", impl, client->name,
commands[command].name, tag, name); commands[command].name, tag, name);
if ((o = find_device(client, SPA_ID_INVALID, name, sink)) == NULL) if (name != NULL) {
return -ENOENT; if ((o = find_device(client, SPA_ID_INVALID, name, sink)) == NULL)
return -ENOENT;
if ((res = pw_manager_set_metadata(manager, client->metadata_default, res = pw_manager_set_metadata(manager, client->metadata_default,
PW_ID_CORE, PW_ID_CORE,
sink ? METADATA_CONFIG_DEFAULT_SINK : METADATA_CONFIG_DEFAULT_SOURCE, sink ? METADATA_CONFIG_DEFAULT_SINK : METADATA_CONFIG_DEFAULT_SOURCE,
"Spa:String:JSON", "{ \"name\": \"%s\" }", name)) < 0) "Spa:String:JSON", "{ \"name\": \"%s\" }", name);
} else {
res = pw_manager_set_metadata(manager, client->metadata_default,
PW_ID_CORE,
sink ? METADATA_CONFIG_DEFAULT_SINK : METADATA_CONFIG_DEFAULT_SOURCE,
NULL, NULL);
}
if (res < 0)
return res; return res;
return reply_simple_ack(client, tag); return reply_simple_ack(client, tag);