From 19964963d3b1c980f4b16ff2d150d9382943ee51 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 7 Dec 2022 21:18:33 +0100 Subject: [PATCH] impl-node: don't do IPC from data-loop --- src/pipewire/impl-node.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/pipewire/impl-node.c b/src/pipewire/impl-node.c index 92579acc1..40b7ec438 100644 --- a/src/pipewire/impl-node.c +++ b/src/pipewire/impl-node.c @@ -809,17 +809,9 @@ do_move_nodes(struct spa_loop *loop, struct impl *impl = user_data; struct pw_impl_node *driver = *(struct pw_impl_node **)data; struct pw_impl_node *node = &impl->this; - int res; pw_log_trace("%p: driver:%p->%p", node, node->driver_node, driver); - if ((res = spa_node_set_io(node->node, - SPA_IO_Position, - &driver->rt.activation->position, - sizeof(struct spa_io_position))) < 0) { - pw_log_debug("%p: set position: %s", node, spa_strerror(res)); - } - pw_log_trace("%p: set position %p", node, &driver->rt.activation->position); node->rt.position = &driver->rt.activation->position; @@ -845,6 +837,7 @@ int pw_impl_node_set_driver(struct pw_impl_node *node, struct pw_impl_node *driv { struct impl *impl = SPA_CONTAINER_OF(node, struct impl, this); struct pw_impl_node *old = node->driver_node; + int res; if (driver == NULL) driver = node; @@ -878,6 +871,13 @@ int pw_impl_node_set_driver(struct pw_impl_node *node, struct pw_impl_node *driv node->driver_node = driver; node->moved = true; + if ((res = spa_node_set_io(node->node, + SPA_IO_Position, + &driver->rt.activation->position, + sizeof(struct spa_io_position))) < 0) { + pw_log_debug("%p: set position: %s", node, spa_strerror(res)); + } + pw_loop_invoke(node->data_loop, do_move_nodes, SPA_ID_INVALID, &driver, sizeof(struct pw_impl_node *), true, impl);