diff --git a/src/modules/module-protocol-pulse/pulse-server.c b/src/modules/module-protocol-pulse/pulse-server.c index 8d259b323..21cdf86a8 100644 --- a/src/modules/module-protocol-pulse/pulse-server.c +++ b/src/modules/module-protocol-pulse/pulse-server.c @@ -4847,9 +4847,17 @@ 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, commands[command].name, tag, name); + if (name != NULL && (o = find_device(client, SPA_ID_INVALID, name, sink)) == NULL) + return -ENOENT; + + if (sink) { + free(client->default_sink); + client->default_sink = name ? strdup(name) : NULL; + } else { + free(client->default_source); + client->default_source = name ? strdup(name) : NULL; + } if (name != NULL) { - if ((o = find_device(client, SPA_ID_INVALID, name, sink)) == NULL) - return -ENOENT; res = pw_manager_set_metadata(manager, client->metadata_default, PW_ID_CORE, sink ? METADATA_CONFIG_DEFAULT_SINK : METADATA_CONFIG_DEFAULT_SOURCE,