From d9b80fda37a9af0e7166ad39af91569d002307a6 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Sat, 6 Mar 2021 20:06:06 +0100 Subject: [PATCH] pulse-server: set our default sink/source immediately In COMMAND_SET_DEFAULT_SINK/SOURCE, set our default source and sink immediately instead of waiting for the metadata update. This makes it possible to check for the new default sink immediately in other modules. --- src/modules/module-protocol-pulse/pulse-server.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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,