From 1ca5bc6b94d29870417465d43d83d2c9c8e69c61 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 17 Feb 2022 16:57:02 +0100 Subject: [PATCH] pulse-server: do a roundtrip before replying to PLAY_SAMPLE So that we can map the stream id to the sink_index. Fixes #2142 --- src/modules/module-protocol-pulse/pulse-server.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/modules/module-protocol-pulse/pulse-server.c b/src/modules/module-protocol-pulse/pulse-server.c index c3172c8a6..2f2a121e1 100644 --- a/src/modules/module-protocol-pulse/pulse-server.c +++ b/src/modules/module-protocol-pulse/pulse-server.c @@ -2324,12 +2324,11 @@ static struct pw_manager_object *find_device(struct client *client, return o; } -static void sample_play_ready(void *data, uint32_t id) +static void sample_play_ready_reply(void *data, struct client *client, uint32_t tag) { struct pending_sample *ps = data; - struct client *client = ps->client; struct message *reply; - uint32_t index = id_to_index(client->manager, id); + uint32_t index = id_to_index(client->manager, ps->play->id); pw_log_info("[%s] PLAY_SAMPLE tag:%u index:%u", client->name, ps->tag, index); @@ -2343,6 +2342,13 @@ static void sample_play_ready(void *data, uint32_t id) client_queue_message(client, reply); } +static void sample_play_ready(void *data, uint32_t id) +{ + struct pending_sample *ps = data; + struct client *client = ps->client; + operation_new_cb(client, ps->tag, sample_play_ready_reply, ps); +} + static void on_sample_done(void *obj, void *data, int res, uint32_t id) { struct pending_sample *ps = obj;