From 67e6a66429e2b0820a46429695e5ffd87ffc4424 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 29 Nov 2018 17:31:47 +0100 Subject: [PATCH] remote: pause with invoke --- pipewire-pulseaudio | 2 +- src/pipewire/remote.c | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/pipewire-pulseaudio b/pipewire-pulseaudio index d02a8375c..2864e7ec7 160000 --- a/pipewire-pulseaudio +++ b/pipewire-pulseaudio @@ -1 +1 @@ -Subproject commit d02a8375c3c5c59303cb31e43f5addc3517f1f39 +Subproject commit 2864e7ec75602534795240a376804007d16db213 diff --git a/src/pipewire/remote.c b/src/pipewire/remote.c index 11c373ef0..4836e0267 100644 --- a/src/pipewire/remote.c +++ b/src/pipewire/remote.c @@ -886,6 +886,17 @@ static void client_node_event(void *object, const struct spa_event *event) pw_log_warn("unhandled node event %d", SPA_EVENT_TYPE(event)); } +static int +do_pause_source(struct spa_loop *loop, + bool async, uint32_t seq, const void *data, size_t size, void *user_data) +{ + struct node_data *d = user_data; + pw_loop_update_io(d->core->data_loop, + d->rtsocket_source, + SPA_IO_ERR | SPA_IO_HUP); + return 0; +} + static void client_node_command(void *object, uint32_t seq, const struct spa_command *command) { struct pw_proxy *proxy = object; @@ -898,9 +909,8 @@ static void client_node_command(void *object, uint32_t seq, const struct spa_com pw_log_debug("node %p: pause %d", proxy, seq); if (data->rtsocket_source) { - pw_loop_update_io(remote->core->data_loop, - data->rtsocket_source, - SPA_IO_ERR | SPA_IO_HUP); + pw_loop_invoke(data->core->data_loop, + do_pause_source, 1, NULL, 0, true, data); } if ((res = spa_node_send_command(data->node->node, command)) < 0) @@ -985,6 +995,8 @@ client_node_port_set_param(void *object, goto done; } + pw_log_debug("port %p: set param %d %p", port, id, param); + if (id == SPA_PARAM_Format) { struct mix *mix; spa_list_for_each(mix, &data->mix[direction], link) {